Haskell:一个组合案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Haskell:一个组合案例相关的知识,希望对你有一定的参考价值。

这是通过foldl连接的无用案例,纯粹教育(对我而言):

foldl (\xs x -> xs ++ [x]) [1,2] [11,12,13]
[1,2,11,12,13]

有没有办法将它打包得更紧,使用组合而不是lambda?

答案

这只是从HTNWWill Ness的评论中提取的更易读的摘要:

-- Reduction to poinfree
a = \xs x -> xs ++ [x]
b = \xs x -> xs ++ return x
c = \xs x -> ((xs ++) . return) x
d = \xs x -> ((. return) (xs ++)) x
e = \xs x -> ((. return) . (++)) xs x

以上是关于Haskell:一个组合案例的主要内容,如果未能解决你的问题,请参考以下文章

在 Haskell 中组合任何类型的绑定

Haskell 和函数组合

Haskell中两个列表元素的所有组合

你如何计算 Haskell 列表中的所有列表组合?

Haskell 示例中的函数组合

关于haskell组合的错误