我有一项任务是从[[a]]
矩阵中获取一列。
一个简单的解决方案是
colFields :: Int -> [[a]] -> [a]
colFields n c = map (!! n) c
当缩小一级抽象时,它将是
colFields n = map (!! n)
我觉得我可以轻易摆脱n
,但我不能这样做。
答案 0 :(得分:13)
您正在寻找的是
colFields = map . flip (!!)
然而,这一点并不十分清楚,我将n
参数留在那里。使用n
作为显式参数,我立即了解该函数的作用。没有它,我必须考虑一下,以便理解定义,即使对于像这样的简单案例。
我使用pointfree工具非常简单地获得了这个答案,尽管有一些方法可以手工推导出来。