Joa*_*ner 4 haskell function function-composition
如果我有一个功能列表,每种类型a -> a的某种类型,最简洁,优雅和惯用的方式组合它们; 最好不要添加额外的依赖项?
一些变体包括
foo (x:xs) = x . (foo xs)
foo [] = id
Run Code Online (Sandbox Code Playgroud)
和
foo = foldr (.) id
Run Code Online (Sandbox Code Playgroud)
和
foo = appEndo . mconcat . map Endo
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我期待找到更好的东西.
Dan*_*zer 19
我会说你不打算打败
comp = foldr (.) id
Run Code Online (Sandbox Code Playgroud)
为什么?好吧,我们有一个列表,我们正试图以正确的关联方式减少它.
如果你看一下的实现and,sum,maximum和类似的,你会看到,这是他们如何在标准库中实现的,我不认为你比这更地道:)
Tangent:我不愿意添加foldr1评论中提到的变体,因为我会说这是意外的行为,maximum因为这显然是必须的.
另一个,可能不短,foldr (.) id但我觉得很可爱:
foo = flip (foldr id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |