【发布时间】:2014-04-11 22:05:18
【问题描述】:
在 Haskell 中,您可以拥有无限列表,因为它不会完全计算它们,而是使用 thunk。我想知道是否有一种方法可以序列化或以其他方式将一段数据的 thunk 保存到文件中。例如,假设您有一个列表[0..]。然后你对其进行一些处理(我最感兴趣的是tail 和(:),但它也应该支持filter 或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
【问题讨论】:
-
类似问题(也许,更详细地说明在已实现的 Haskell 东西中寻找这些机制的位置,即分布式编程):Can Haskell functions be serialized?。
-
另请参阅Haskell for all: The internet of code 以获得(理论上的)建议如何编码发送它们的函数。
标签: haskell serialization thunk