haskell中的功能成分

haskell中的功能成分,haskell,composition,Haskell,Composition,为什么我做不到 fst . fst (("Bob",12),10) 在哈斯克尔 :t fst . fst Prelude> ((c,b),b1) -> c 这难道不意味着((“Bob”,12),10)是fst的一个很好的候选人吗。fst,因为它是 (([Char],Integer),Integer) Haskell中的最高优先级是函数应用程序或f a。所以 fst . fst ((a, b), a) 被解析为 fst . (fst ((a, b), a)) 这显然是胡说八道

为什么我做不到

fst . fst (("Bob",12),10)
在哈斯克尔

:t fst . fst
Prelude> ((c,b),b1) -> c
这难道不意味着((“Bob”,12),10)是fst的一个很好的候选人吗。fst,因为它是

(([Char],Integer),Integer)

Haskell中的最高优先级是函数应用程序或
f a
。所以

fst . fst ((a, b), a)
被解析为

fst . (fst ((a, b), a))
这显然是胡说八道。您可以使用
$
操作符解决这个问题,它只是具有最低优先级的函数应用程序,因此
f$a==f a

fst . fst $ ((a, b), a)
或者和一些帕伦斯

(fst . fst) ((a, b), a)

提示:它被解析为
fst。(fst((“Bob”,12),10))
而你想要的是
(fst.fst)(“Bob”,12),10)
@Vitus作为一个神童,你真是名副其实(如果你的尼克确实来自那部电影),非常感谢你的记录,您的原始代码行的实际GHCi错误是什么?更重要的是haskell风格-是$operator还是圆括号?@JaneDoe
$
一般来说