最左边的最外面的减少(Haskell)

时间:2014-01-31 17:09:38

标签: haskell reduction

我的任务是在下面的表达式上使用最左边的最外层缩小:

f inc expo 9 (f (*2) expo 3 1)

inc定义为:

 inc :: Int -> Int
 inc x = x+1

expo定义为:

expo :: Int -> Int
expo x = expo (x*2)

和f as:

f :: (Int->Int) -> (Int-> Int) -> Int -> Int -> Int
f g h a b = g(a-b)

我完全不知道从哪里开始减少更多功能。我读到了redex没有包含在任何其他redex中的提示,但我没有得到它;(。

我很感激每一个提示/帮助。

1 个答案:

答案 0 :(得分:1)

的第一个(最左边,最外面)减少
f inc expo 9 (f (*2) expo 3 1)

是应用f的定义,一次,f g h a b = g(a-b),因此我们将g用作inc,将a用作9b(f (*2) expo 3 1),提供

inc(9 - (f (*2) expo 3 1))

现在我们已经完成了我们被问到的问题。这是最左边,最外面的减少。请注意,我们不需要使用任何有关其他函数的事实,这可能是暗示所得到的。