我本以期待show.fst (1,2)工作.但我很惊讶地发现它有例外.
在运行单个fst (1,2)返回1::Num a => a并show 1打印出1作为字符串
show.fst $ (1,2)
Run Code Online (Sandbox Code Playgroud)
工作良好.这更令人困惑,因为我没有看到如何进一步减少元组(据我所知,当我们想要评估表达式的正确部分时使用$运算符.
lis*_*rus 10
在Haskell中,函数应用程序的优先级高于任何运算符,因此
show . fst (1,2)
Run Code Online (Sandbox Code Playgroud)
被解析为
show . (fst (1,2))
Run Code Online (Sandbox Code Playgroud)
并且,由于fst (1,2) == 1不是一个功能,很难用任何东西组成它.
该$运营商实际上只是功能应用,但有一个非常低的优先级.相反,这意味着这一点
show . fst $ (1,2)
Run Code Online (Sandbox Code Playgroud)
如果解析为
(show . fst) $ (1,2)
Run Code Online (Sandbox Code Playgroud)
这似乎是你想要的.