标签: networking haskell types
通过网络发送和接收的数据类型是String或Bytestring。我们无法发送任何其他类型,例如Int或[Bool],因为所有内容都通过Handle传递。 我知道我们可以解析它,即使使用read,但我认为它不漂亮,也不可靠,也不会有效。
Int
[Bool]
Handle
read
为什么选择这个?是因为它在技术上“不可能”,或者因为Network只是对C库的绑定,因为延迟,或者是因为其他原因?
Network
答案 0 :(得分:8)
通过网络传输的数据只是一个字节流。您可以在任一端点为该字节流分配含义,但在网络上它没有任何意义。据我所知,每种语言都是如此,有些人只是选择在标准库中抽象出来。
您可以使用binary或cereal等软件包对您发送的数据进行编码/解码(使用encode和decode功能)。对于许多标准类型(例如Binary,Serialize,Int和{},两者都带有序列化类的实例(分别为Double和Bool) {1}}。
encode
decode
Binary
Serialize
Double
Bool