Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- datatype expression = Constant of int |
- Variable of string |
- Operator of string * expression |
- Pair of expression list |
- List of expression list
- datatype pattern = ConstantP of int
- | VariableP of string
- | OperatorP of string * pattern
- | PairP of pattern list
- | ListP of pattern list
- | UnorderedListP of pattern list
- | Wildcard
- fun pretvori(pair: pattern) =
- case pair of
- VariableP a => Variable a
- | ConstantP a => Constant a
- | PairP [a,b] => Pair [pretvori(a), pretvori(b)]
- | OperatorP(a, b) => Operator(a, (pretvori(b)))
- | ListP a => case a of
- h::nil => List [pretvori(h)]
- |h::t => List ([pretvori(h)] @ [] @ [pretvori(ListP t)])
- pretvori(ListP([ConstantP 1, ConstantP 2, ListP([ConstantP 3, ConstantP 7, ListP([ConstantP 77, ConstantP 33])])]));
- (*OUTPUT*)
- val it =
- List
- [Constant 1,
- List
- [Constant 2,
- List
- [List
- [Constant 3,
- List [Constant 7,List [List [Constant 77,List [Constant 33]]]]]]]]
- : expression
- (*WHAT THE OUTPUT SHOULD BE *)
- pretvori(List([Constant 1, ConstantP , List([Constant 3, Constant 7, List([Constant 77, Constant 33])])]));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement