【发布时间】:2014-12-21 21:34:00
【问题描述】:
我有两个功能:
f1 :: Bool -> Int
f1 x
| x == True = 5
| x == False = 10
f2 :: Int -> Int
f2 x = x * 2
既然 f1 的输出是 f2 的正确输入,那怎么来的
f2 f1 True
导致错误?
我不知道要标记什么,所以标记可能不合适。
【问题讨论】:
-
试试
f2 (f1 True)或f2 $ f1 True。 -
@Jubobs 你能给我举个例子,其中 (f g) x 是一个格式良好的表达式,f 和 g 都是函数吗?
-
@Arthur
filter odd [1, 2, 3]例如。 -
@Arthur 考虑
doTwice f x = f (f x)它的类型为(a->a)->a->a。那么(doTwice (\x -> x+1)) 3的格式就很好了。 -
@Arthur 现在我确信这些都是家庭作业问题。这里有一个提示。如果
(f g) x格式正确,则必须存在一些函数h使得h . f g格式正确。
标签: haskell currying higher-order-functions