我怎么做不到
fst . fst (("Bob",12),10)
在Haskell?
:t fst . fst
Prelude> ((c,b),b1) -> c
这不会使((“Bob”,12),10)成为fst的好候选人。 fst,因为它是
(([Char],Integer),Integer)
答案 0 :(得分:8)
Haskell中的最高优先级是函数应用程序或f a
。所以
fst . fst ((a, b), a)
被解析为
fst . (fst ((a, b), a))
这显然是胡说八道。您可以使用$
运算符来解决此问题,该运算符只是具有最低优先级的函数应用程序,因此f $ a == f a
。
fst . fst $ ((a, b), a)
或者有些parens
(fst . fst) ((a, b), a)