Protocols 用于描述和实现通信协议的DSL
协议用于描述和实现通信协议的DSL。例如,给定两方 “A” 和 “B”,其中 “A” 向 “B” 发送字符串并接收整数返回的协议可以描述如下:
aToB : Protocol ['A, 'B] () aToB = do 'A ==> 'B | String 'B ==> 'A | Int Done
Protocol xs t 类型描述了双方 xs 之间的通信协议,最终返回 t 类型的东西。符号 'A ==> 'B | t 'A ==> 'B | t 表示 A 方向 B 方发送类型为 t 的值。
B 双方 A 实现方式如下:
a : Agent IO aToB 'A ['B := bchan] [STDIO] () a = do sendTo 'B \"Hello\" answer <- recvFrom 'B putStrLn (show answer)
下载地址
用户评论