我有一個作業,我需要根據地圖或過濾器功能重新定義放置功能。
下降 n (:xs) = 下降 (n-1) (xs) 下降 3 [1,2,3,4,5] = [4,5]
我有一個想法,但我不確定如何實作它。首先,您使用 [1..] 壓縮串列的元素(例如 xs),然后您會得到與這些數字配對的串列元素(例如 (x,y))。然后,您以某種方式嘗試過濾這些對,使 y 大于 3。
然后從過濾的對中列印出 x 的元素。
但是我很難將這個想法變成代碼。我能得到的任何幫助或關于這個想法的建議將不勝感激。
uj5u.com熱心網友回復:
你有完全正確的想法。這是一個三步程序:(1)使用某種列舉器進行壓縮,(2)基于索引的過濾器,以及(3)映射以擺脫列舉器。代表它的代碼看起來像這樣
drop :: Int -> [a] -> [a]
drop n xs = map snd . filter (\(i, _) -> i > n) . zip [1..] $ xs
Prelude 函式定義snd為
snd :: (a, b) -> b
snd (a, b) = b
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/440935.html
標籤:哈斯克尔
