Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- My lispy!!!!!
  2.  
  3. import Data.HashMap.Strict
  4.  
  5. type Variable = String
  6.  
  7. type Environment = HashMap
  8.  
  9. type Operand
  10.   = Lambda [Variable] RetType Operand
  11.   | Operation
  12.   | Variable Variable
  13.   | Integer Int
  14.  
  15. type Operator
  16.   = Add Operand Operand
  17. --  | Sub Operand Operand
  18. --  | Mul Operand Operand
  19.  
  20. type Oporation = Operator Operand Operand
  21.    
  22. eval :: Operand -> Operand
  23. eval (Integer i) = i
  24. eval (Variable v) = lookup env v
  25. eval (Operation op o1 o2) = eval
  26.  
  27. eval :: Operation -> Operand
  28. eval Add o1 o2 = eval o1 + eval o2
  29. -- eval Sub o1 o2 e = eval o1 - eval o2
  30. -- eval Mul o1 o2 e = eval o1 * eval o2
  31. -- eval Div o1 o1 e = eval o1 / eval o2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement