Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. zero = \f -> \x -> x
  2. mySucc = \n -> \f -> \x -> f $ n f x
  3. add = \n -> \m -> n mySucc m
  4. mkPair = \a -> \b -> \s -> s a b
  5. myFst = \a -> \b -> a
  6. mySnd = \a -> \b -> b
  7. step = \p -> mkPair (p mySnd) (mySucc (p mySnd))
  8. nSteps = \n -> \p -> n step p
  9. zz = mkPair zero zero
  10. myPred = \n -> (nSteps n zz) myFst
  11.  
  12. one = mySucc zero
  13. two = mySucc (mySucc zero)
  14. three = mySucc (mySucc (mySucc zero))
  15. six = add (add two three) one
  16.  
  17. main :: IO ()
  18. main = do
  19. let p = mkPair two three
  20. let n = nSteps three p
  21. putStrLn $ show $ (myPred six) (\x -> x + 1) 0 -- => 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement