Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun some(p: 'a Parser): ('a list) Parser = some_v p
- and many_v p = (some_v p) <|> ret nil
- and some_v p = ((curry (op ::)) <$> p) <*> (many_v p)
- - use "src/combinators.sml";
- [opening src/combinators.sml]
- [autoloading]
- [library $SMLNJ-BASIS/basis.cm is stable]
- [autoloading done]
- signature COMB =
- sig
- datatype 'a Parser = Parser of {parse:string -> ('a * string) list}
- val curry : ('a * 'b -> 'c) -> 'a -> 'b -> 'c
- val elem : string -> char -> bool
- val >>= : 'a Parser * ('a -> 'b Parser) -> 'b Parser
- val <*> : ('a -> 'b) Parser * 'a Parser -> 'b Parser
- val <$> : ('a -> 'b) * 'a Parser -> 'b Parser
- val <|> : 'a Parser * 'a Parser -> 'a Parser
- val ret : 'a -> 'a Parser
- val some : 'a Parser -> 'a list Parser
- val many : 'a Parser -> 'a list Parser
- val pfail : 'a Parser
- val pcombine : 'a Parser -> 'a Parser -> 'a Parser
- end
- structure Combinator : COMB
- val it = () : unit
- - val f = Combinator.some Combinator.pfail
- = ;
- stdIn:3.5-3.41 Warning: type vars not generalized because of
- value restriction are instantiated to dummy types (X1,X2,...)
- ^C
- Interrupt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement