根据A History of Haskell: Being Lazy with Class(参见第7节),两种主要方法是基于流的IO和基于延续的IO。 在基于流的IO中,你的main程序是一个[Response] -> [Request]函数,运行时系统向它提供一个神奇的懒惰输入列表,然后对输出求值,看看程序产生什么请求;在编写main时需要注意,在输出相应的请求之前,它不会查看其输入。 在基于continuation的IO中,有一个抽象类型Behaviour(具体地说,它被定义为上面的[Response] -> [Request]类型,但重点是它不一定是),IO基元需要一个continuation来应用于它们的结果。
1条答案
按热度按时间roejwanj1#
根据A History of Haskell: Being Lazy with Class(参见第7节),两种主要方法是基于流的IO和基于延续的IO。
在基于流的IO中,你的
main
程序是一个[Response] -> [Request]
函数,运行时系统向它提供一个神奇的懒惰输入列表,然后对输出求值,看看程序产生什么请求;在编写main
时需要注意,在输出相应的请求之前,它不会查看其输入。在基于continuation的IO中,有一个抽象类型
Behaviour
(具体地说,它被定义为上面的[Response] -> [Request]
类型,但重点是它不一定是),IO基元需要一个continuation来应用于它们的结果。