繁体   English   中英

如何在Haskell中进行多次eta减少

[英]How to make multiple eta reductions in Haskell

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

一个简单的解决方案就是

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

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

colFields n = map (!! n)

我觉得我可以轻易摆脱n ,但我不能这样做。

你在寻找什么

colFields = map . flip (!!)

但是,这不是很清楚,我会在那里留下n参数。 使用n作为显式参数,我立即理解该函数的作用。 没有它,我必须考虑一下才能理解定义,即使对于这样的简单情况也是如此。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM