我正在嘗試創建一個基于長度 n 和一些初始值構建串列的函式,并構建串列的其余部分,將一些函式/操作應用于前一個值。例如:
n = 5, initial_value = x, -> [x, fx, ... ]
我知道要制作一個大小為 n 的串列,您可以簡單地使用復制為您提供一個串列,但這可能不是實作此目的的最佳方法。
代碼:
buildList::Int -> (b -> b) -> b -> [b]
buildList len func initial = replicate len something here
不確定“len”之后會發生什么。
uj5u.com熱心網友回復:
replicate將多次重復相同的值。這使得沒有太大的意義,因為我們開始x,f x,f (f x),等。
我們可以利用iterate :: (a -> a) -> a -> [a]這個意志來iterate f x構造一個無限串列[x, f x, f (f x), f (f (f x))), …]。
然后我們應該將串列限制為前N 個專案。我把它作為一個練習來做到這一點。因此,該函式如下所示:
buildList :: Int -> (a -> a) -> a -> [a]
buildList len func initial = … (iterate func initial)
您仍然需要實作該…部分的地方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352613.html
標籤:哈斯克尔
下一篇:haskell函式/模式運算子
