Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open Common
- let pEBind msg = Some (None, Error msg)
- type Token = TVar of string
- let pMap f inp =
- match inp with
- | Error msg -> (Some << Error) <| msg
- | Ok inp -> Some <| f inp
- let rec (|VARLIST|_|) lst =
- match lst with
- | Error token -> Some (None, Error token)
- | VAR (Some ast, (VARLIST (Some ast2, rest))) -> Some( Some(FuncApp(ast, ast2)), rest)
- | VAR (Some(ast), rest) -> Some(Some ast, rest)
- | Ok lst -> pEBind <| lst
- and (|VAR|_|) lst =
- match lst with
- | Error token -> Some (None, Error token)
- | Ok ((TVar x)::rest) -> Some(Some(Var x), Ok rest)
- | Ok lst -> pEBind <| lst
- let var = (|VARLIST|_|)
- [<EntryPoint>] //*
- let main argv =
- //----------------------------------
- let tokenl = [TVar "x"; TVar "y"]
- Ok tokenl |> var |> printfn "%A"
- 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement