blob: 118ca6f52bf42e987863ba9bdd9bb2fc34833dc6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
module Unlambda.Builtins (
k,
s,
i,
dot,
r,
d
) where
k :: a -> b -> a
k x y = x
s :: (a -> b -> c) -> (a -> b) -> a -> c
s x y z = (x z) (y z)
i :: a -> a
i = id
dot :: Char -> a -> IO a
dot ch f = putChar ch >> return f
r :: a -> IO a
r f = putChar '\n' >> return f
-- may not work as per unlambda lazy semantics
d :: (a -> b) -> (a -> b)
d x = (\y -> x y)
|