簡體   English   中英

最后用foldr1實現

[英]Implementing last with foldr1

我在使用foldr1實現最后一個函數時遇到問題。 我假設它采用最右邊的元素並將其視為累加器值,然后將二進制函數應用於累加器及其鄰居,直到到達給定列表的開頭。 但是,下面顯示的代碼不起作用。 有人可以告訴我這是怎么回事嗎? 而不是返回最后一個元素,而是打印出第一個元素

last' list = foldr1 (\acc _ -> acc) list
foldr :: (a -> b -> b) -> b -> [a] -> b

如您所見,foldr使累加器成為第二個參數,而列表中的值是第一個。 foldr1的行為相同。 因此,正如Lee所說,您需要讓lamdba返回第二個參數,而不是第一個。 或者,您可以說foldr1 (flip const)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM