在 Haskell 中,您可以拥有无限列表,因为它不会完全计算它们,而是使用 thunk。我想知道是否有一种方法可以序列化或以其他方式将一段数据的 thunk 保存到文件中。例如,假设您有一个列表[0..]
。然后你对它进行一些处理(我最感兴趣的是tail
and (:)
,但它应该也支持做filter
or map
。)这是我正在寻找的一个例子。
serial::(SerialThunk a)=>a->serThunk
serialized = serial ([0..] :: [Int])
main=writeToFile "foo.txt" serialized
和
deserial::(SerialThunk a)=>serThunk->a
main=do
deserialized <- readFromFile "foo.txt" :: IO [Int]
print $ take 10 deserialized