Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
IO 0.99 KB | None | 0 0
  1. # ADT
  2.  
  3. Maybe   := Object clone
  4.  
  5. Nothing := Maybe clone
  6. Just    := Maybe clone
  7. Just value := Nothing
  8.  
  9. Functor := Object clone
  10. Functor map := Nothing
  11.  
  12. MaybeFunctor := Functor clone
  13. Maybe asFunctor := MaybeFunctor
  14. MaybeFunctor map = method(f, maybe,
  15.         if(maybe == Nothing,
  16.                 Nothing clone,
  17.                 (
  18.                    result := Just clone
  19.                    result value = f(maybe value)
  20.                    result
  21.                 )
  22.         )
  23. )
  24.  
  25. safeDiv := method(x, y,
  26.         if(y == 0,
  27.                 Nothing clone,
  28.                 result := Just clone
  29.                 result value = (x / y)
  30.                 result
  31.           )
  32. )
  33.  
  34. val1 := safeDiv(3,4)
  35. val2 := safeDiv(5,0)
  36.  
  37. F := Object clone
  38. F succ := method(n,
  39.         n + 1
  40. )
  41.  
  42. id := method(n, n)
  43.  
  44. fJust := method(f, j, (
  45.         n := Just clone
  46.         n value = f(j value)
  47.         n
  48.        )
  49. )
  50.  
  51. #res0 := (Maybe asFunctor map)(succ, val1)
  52. #res1 := (Maybe asFunctor map)(succ, val2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement