summaryrefslogtreecommitdiff
path: root/Unlambda/Builtins.hs
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)