什么时候使用毫无意义的风格?

包括我在内的许多haskell程序员都喜欢无意义的风格,特别是在编写复杂的解析器时。它们使代码更具可读性和更简洁。但有时,它只是反过来(例如在滥用
Monad
和朋友的实例时为
(->) a
)。 请给我一些基本的指导,你什么时候认为毫无意义的风格是有用的,何时不是。例如,如果我不得不使用部分组合(类似于
flip ((.) . take) . drop
),我总是使用lambda。     
已邀请:
这显然是个人风格的问题。我认为无点的风格是一个澄清你的想法的工具,如果it6ѭ是一个好的东西,那么将
(->) a
视为
Monad
(->)
是一件好事。 我能想到一个人做,一个人不做: 不要用咖喱的成分构成,它太复杂,不能解剖,例如,
(sort .) . (++)
最好写成
xs ys -> sort (xs ++ ys)
。 使用标准
Control.*
模块中的任何组合器,例如,使用
(->)
作为
Arrow
curry (negate *** (+1))
,使用
(->) [a]
作为
Monad
ap (zipWith (+)) tail
。 让共同控制类型的组合子参与的原因不仅仅是让你的意思清楚,而且它提醒你这些存在并且通常是有用的,不仅用于制作无点定义,而且用于解决问题。 与所有事情一样,应该注意不要过度。涉及太多组合功能的无点定义可能很快变得复杂。     
如果有疑问,只需用
(.)
编写函数。不要踩到翻转和交换和
(.) . (.)
s     

要回复问题请先登录注册