haskell - 如何在 Haskell 中进行多次 eta 缩减

标签 haskell

我的任务是从 [[a]] 矩阵中获取一列。

一个简单的解决方案是

colFields :: Int -> [[a]] -> [a]
colFields n c = map (!! n) c

当减少一级抽象时,它会是

colFields n = map (!! n)

我感觉我可以轻松摆脱n,但我做不到。

最佳答案

您要找的是

colFields = map . flip (!!)

但是,这读起来不太清楚,我将 n 参数保留在那里。使用 n 作为显式参数,我立即明白该函数的作用。如果没有它,即使对于像这样的简单情况,我也必须思考一分钟才能理解其定义。

我通过使用 pointfree 非常简单地获得了这个答案工具,尽管有一些方法可以手动导出它。

关于haskell - 如何在 Haskell 中进行多次 eta 缩减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538438/

相关文章:

haskell - Cabal 无法确定 GHC 版本

haskell - 管道教程 : ListT example

list - 在 Haskell 中合并 3 个列表

haskell - 将任何文学 Haskell 渲染为 PDF、HTML 或类似文件

haskell - 理解 Haskell 中的直接自引用

haskell - Yesod 一个站点有多个持久后端

haskell - Haskell中的递归问题-语法问题?

haskell - wai 的意外管道行为

.net - 将 Haskell 与 .Net 集成?

design-patterns - 如何设计单子(monad)栈?