Kodutöö 4
1. {$\lambda$}-termid
Kas tegemist on {$\lambda$}-termiga? Kui jah, kirjuta ümber ühe parameetriga lambdadega ja pane kõik sulud
- {$ \lambda{} a\ (b.\ b\ a) \lambda{} z. z$}
- {$ f \lambda{} x\ y.\ g\ x\ y\ z$}
- {$ f \lambda{} z.\ z\ \lambda{} x\ y.\ g\ x\ y$}
- {$ \lambda{}\lambda{}2\ 1$}
- {$ \lambda{} a\ b.\ b\ a\ \lambda{} z.\ z$}
2. Muutujate klassifitseerimine
Märgi iga muutuja kohta, kas see on vaba või millise parameetriga see seotud on.
- {$ \lambda{}f.\ (\lambda{}g.\ g\ x)\ (\lambda{}x.\ f\ x)$}
- {$ (\lambda{}x.\ (\lambda{}g.\ g\ x))\ x$}
- {$ \lambda{}g.\ (\lambda{}f.\ f\ x)\ (\lambda{}x.\ g\ x)$}
- {$ z\ (\lambda{}h\ x.\ (\lambda{}f.\ h\ f)\ x)$}
- {$ \lambda{}h\ x.\ \text{cond}\ h\ (\text{add}\ 1\ x)\ k$}
3. Substitutsioon
Leia substitutsiooni tulemus!
- (λf. f y(λx.x))[y→λx y. f x]
- (λx. f (x x))(λx. f (x x))[f→λx y. y]
- (λx g y.x g y)[g→x g y]
- ((λx y. y) y)[y→λx. y]
4. Reduktsioon
Redutseeri väärtuseks (s.t. nii palju kui saab) a) normaaljärjekorras ja b) aplikatiivjärjekorras.
- (λx. add x) (add 1 2) (mul 2 2)
- (λf. f f) ((λx. b) (λx. x))
- (λf. (λg. f) f) ((λx. b) (λx. x))
- ((λy. (λx. y)) 1 ((λx. x x) (λx. x x)))
- ((λx. x)(λx. (λy. x w) r) (λx. y))
- (λx. cond (iszero x) (add x) (mul x)) 1 (add 1 2)