12个抽象的软糖

在程序中使用Fudget库时通常与一些特定于应用程序的代码相结合,即通常以串行组合的形式附加到程序。示例,我们已经看到了地图F映射状态F为此:

facF=intDispF>==<mapF fac>==<intInputF
counterF=intDispF>==<mapstateF count 0>=<buttonF“向上”
功能地图F映射状态F创造摘要软糖,也就是说,不执行任何I/O的假程序。它们仅通过高级流进行通信。

构造抽象软凑的一种更通用的方法是函数吸收F,

吸收F::服务提供商a b->F类a b类
哪里服务提供商是普通的类型构造函数流动处理器。它们有一个输入流和一个输出流。功能吸收F通过连接创建虚设流处理器的流到fudgets,同时保持低级流断开连接,如如所示图21.

图21。将流处理器转换为抽象软凑。

功能地图F映射状态F事实上是定义为吸收F以下为:

mapF=absF映射SPmapstateF=absF映射状态SP
哪里地图SP映射状态SP,

地图SP::(a->b)->服务提供商a b类映射状态SP::(a->b->(a,[c]))->a->服务提供商b摄氏度
在中进行了讨论第16.2条第16.3条分别是。

虽然高级组合地图F映射状态F适用于大多数fudget应用程序编程,一些程序员可能更喜欢更基本的方法的灵活性创建流处理器。两个示例,其中抽象的fudgets定义为吸收F可以在中找到第32.4条流处理器的广泛讨论可以在中找到第三部分.