函数式编程:从表达式语义到游戏实现
1. 表达式的括号抽象与应用
1.1 括号抽象基础
在函数式编程中,对于 λ 表达式的括号抽象是进行转换的重要原因。当抽象变量 x 时,如果遇到相同变量作为表达式,会产生组合子 I ;若遇到不同变量 y ,则构造表达式 K y 。以下是相关代码实现:
instance Exp BracAbs
where
cons c
= λba . case ba of
Scan
= lambda2bracAbs (cons c)
Abs v
= lambda2bracAbs (app K (cons c))
app f x
= λba . appSKI (f ba) (x ba) ba
where
appSKI :: BracAbs BracAbs BracAbs → BracAbs
appSKI (SKI ( f :: ∀t: (Expr t) | Lambda t))
(SKI (x :: ∀t: (Expr t) | Lambda t)) ba
= case ba of
Scan
= lamb
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



