我的任务是在下面的表达式上使用最左边的最外层缩小:
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中的提示,但我没有得到它;(。
我很感激每一个提示/帮助。
答案 0 :(得分:1)
的第一个(最左边,最外面)减少
f inc expo 9 (f (*2) expo 3 1)
是应用f
的定义,一次,f g h a b = g(a-b)
,因此我们将g
用作inc
,将a
用作9
, b
为(f (*2) expo 3 1)
,提供
inc(9 - (f (*2) expo 3 1))
现在我们已经完成了我们被问到的问题。这是最左边,最外面的减少。请注意,我们不需要使用任何有关其他函数的事实,这可能是暗示所得到的。