-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchapter-1.hs
77 lines (61 loc) · 1.16 KB
/
chapter-1.hs
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
-- Chapter 1 exercises
-- Equivalence exercises
-- λxy.xy = λmn.mz -- b
-- λxy.xxy = λa.(λb.aab) -- c
-- λxyz.zx = λtos.st -- b
-- 1.11 Chapter Exercises
-- Combinators
-- λx.xxx - Yes
-- λxy.zx - No
-- λxyz.xy(zx) - Yes
-- λxyz.xy(zxy) - Yes
-- λxy.xy(zxy) - No
-- Normal form or diverge?
-- λx.xxx - Normal
-- (λz.zz)(λy.yy) - Diverge
-- (λx.xxx)z - Normal
-- Beta reduce
-- 1
-- (λabc.cba)zz(λwv.w)
-- (λa.(λbc.(cba)))zz(λwv.w)
-- (λa.(λb.(λc.(cba))))zz(λwv.w)
-- (λb.(λc.(cbz)))z(λwv.w)
-- (λc.(czz))(λwv.w)
-- (λwv.w)zz
-- (λw.(λv.w))zz
-- (λv.z)z
-- z
-- 2
-- (λx.(λy.xyy))(λa.a)b
-- (λy.(λa.a)yy)b
-- (λy.yy)b
-- bb
-- 3
-- (λy.y)(λx.xx)(λz.zq)
-- (λx.xx)(λz.zq)
-- (λz.zq)(λz.zq)
-- (λz.zq)q
-- qq
-- 4
-- (λz.z)(λz.zz)(λz.zy)
-- (λz.zz)(λz.zy)
-- (λz.zy)(λz.zy)
-- (λz.zy)y
-- yy
-- 5n
-- (λx.λy.xyy)(λy.y)y
-- (λx.λy.xyy)(λa.a)y
-- (λy.(λa.a)yy)y
-- (λy.yy)y
-- yy
-- 6
-- (λa.aa)(λb.ba)c
-- (λb.ba)(λb.ba)c
-- (λb.ba)ac
-- aac
-- 7
-- (λxyz.xz(yz))(λx.z)(λx.a)
-- (λx.λy.λz.xz(yz))(λm.n)(λp.q)
-- (λy.λz.(λm.n)z(yz))(λp.q)
-- (λz.(λm.n)z(λp.q)z)
-- (λz.nq)