[英]beta reduction strategies in Haskell
這是我第一次學習函數式編程。 我確實理解簡單的 beta 減少是如何工作的。
例如:
(\x->2*x)5
意味着您將 xs 替換為 5。
2*5=10
然而,其他例子讓我感到困惑
(\f->f(f 0))(\x->x+1)
我們已經了解了一些評估策略,頭范式和弱頭范式。
從我的筆記中,我明白頭部范式意味着沒有 redex 表達式,而弱頭部范式意味着存在 lambda 抽象。
這對我來說沒有任何意義。 兩者之一是否適用於最后一個示例? 如果是這樣,其他策略的例子是什么?
期限
(\f -> f (f 0)) (\x -> x+1)
既不是頭部范式也不是弱頭部范式。 這個術語是一個 lambda(特別是\\f -> f (f 0)
)到一個術語(特別是\\x -> x+1
)的應用,所以:
“頭范式”和“弱頭范式”都不是評估策略。 形式是描述術語的形容詞; 評估策略通常是描述如何將一個術語變為另一個術語的動詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.