我一直很努力把握(.)和($)运营商在哈斯克尔.我相信我很了解它们之间的差异,但我仍然很难用这些运算符成功替换表达式中的括号.
例如,如果我有表达式
print(show(take 5 [1..10]))
Run Code Online (Sandbox Code Playgroud)
我理解如何使用(.)和($)运算符重写它
print . show . take 5 $ [1..10]
Run Code Online (Sandbox Code Playgroud)
但是,如果我有类似的东西
print (show (take (snd (1,5)) [1..10]))
Run Code Online (Sandbox Code Playgroud)
最远的我可以将其简化为
print . show . take (snd (1,5)) $ [1..10]
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我似乎无法用($)or (.)运算符替换那些内部括号,并让它成功编译.据我所知,大多数Haskeller通常在括号中使用($)和(.)运算符,所以我也很努力地遵循这种风格.如果有人可以指出我如何在不使用括号的情况下重写上面的表达式,我认为这将有助于我使用那些更成功的运算符.谢谢.
haskell ×1