簡體   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