我的老師給了這個班級一些樣題(這個班主要在Scheme(球拍)和lambda演算中),而且我遇到了以下問題: 定義(β-reduce e)使得當β減少是可能的(即,當e的形式爲((λ v e1) e2)並且沒有阻止β-還原並且首先需要一些α重命名的自由變量衝突)時,它返回β減少的結果。否則,它返回#f。 例子: (β-reduce '((λ x (((λ x (x y)) x) (x b))) z
min通常在無類型lambda演算定義爲(使用Caramel's syntax): sub a b = (b pred a)
<= a b = (is_zero (sub b a))
min a b = (<= a b a b)
這是非常低效的。 Sub是二次的,因爲它適用pred(它是線性的)b次。還有一個更高效的實現min爲: min a b succ zero = (a a_succ