Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 为什么将我的函数用作另一个函数的参数会导致错误?哈斯克尔_Haskell_Currying_Higher Order Functions - Fatal编程技术网

Haskell 为什么将我的函数用作另一个函数的参数会导致错误?哈斯克尔

Haskell 为什么将我的函数用作另一个函数的参数会导致错误?哈斯克尔,haskell,currying,higher-order-functions,Haskell,Currying,Higher Order Functions,我有两个职能: 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相同,而不是f2 f1 True。f2 f1 True的类型明显错误,因为f2

我有两个职能:

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相同,而不是f2 f1 True。f2 f1 True的类型明显错误,因为f2的参数类型为Int,但f1的类型为Bool->Int,而不是Int。

试试f2 f1 True或f2$f1 True。@Jubobs你能给我一个例子,其中f g x是格式良好的表达式,f和g都是函数吗?@Arthur filter odd[1,2,3]例如,@亚瑟考虑dodifxf= f fx,它具有a->a->a->a的类型。那么doTwice\x->x+13的格式就很好了。@Arthur现在我确信这两个都是家庭作业问题。这里有个提示。如果fgx是良构的,则一定存在函数h,使得h。f-g格式良好。