fuz*_*fuz 14 haskell coding-style pointfree
包括我在内的许多haskell程序员都喜欢无意义的风格,特别是在编写复杂的解析器时.它们使代码更具可读性和更简洁.但有时,它只是反过来(例如在滥用实例Monad和朋友时(->) a).
请给我一些基本的指导,你什么时候认为毫无意义的风格是有用的,何时不是.例如,如果我不得不使用部分组合(类似的话flip ((.) . take) . drop),我总是使用lambda .
Has*_*ant 14
这显然是个人风格的问题.我认为pointfree风格是说明自己的想法,并查看工具(->) a作为Monad和(->)作为Arrow是一个很好的事情,如果它所服务的目的所在.
我能想到一个人做,一个人不做:
(sort .) . (++)写得最好\xs ys -> sort (xs ++ ys).Control.*模块,例如,写入curry (negate *** (+1))使用(->)作为Arrow和ap (zipWith (+)) tail使用(->) [a]的Monad.让共同控制类型的组合子参与的原因不仅仅是让你的意思清楚,而且它提醒你这些存在并且通常是有用的,不仅用于制作无点定义,而且用于解决问题.
与所有事情一样,应该注意不要过度.涉及太多组合功能的无点定义可能很快变得复杂.
| 归档时间: |
|
| 查看次数: |
1340 次 |
| 最近记录: |