我想模擬Haskell中的[1 .. n]
功能,但使用until
函數。我想要做這樣的事情:Haskell使用「until」函數模擬[1 .. n]
seq :: Int -> [Int]
seq a = until (\list -> if (length list) > a then True else False) (\x -> x ++ ((tail x) + 1)) [1]
,並通過調用seq 5
它應該返回[1, 2, 3, 4, 5]
。我必須使用until
函數。如果你願意,這是一個限制。
你的第一個lambda是過分複雜的。它可以簡單地寫成'(\ list - >(length list)> a)',或者完全用'((> a)。length)'來完成,儘管很多人可能會發現後者很難閱讀。 – ApproachingDarknessFish
'seq'對用戶定義的函數來說是一個非常不恰當和令人困惑的名字:它也作爲原始函數/運算符存在,用於強制評估其他懶惰的thunk。另外,不要使用「序列」,因爲測序具有特殊而廣泛的含義。 –