为什么在Haskell中处理而不是网络的任何类型?

时间:2012-08-23 20:01:12

标签: networking haskell types

通过网络发送和接收的数据类型是String或Bytestring。我们无法发送任何其他类型,例如Int[Bool],因为所有内容都通过Handle传递。 我知道我们可以解析它,即使使用read,但我认为它不漂亮,也不可靠,也不会有效。

为什么选择这个?是因为它在技术上“不可能”,或者因为Network只是对C库的绑定,因为延迟,或者是因为其他原因?

1 个答案:

答案 0 :(得分:8)

通过网络传输的数据只是一个字节流。您可以在任一端点为该字节流分配含义,但在网络上它没有任何意义。据我所知,每种语言都是如此,有些人只是选择在标准库中抽象出来。

您可以使用binarycereal等软件包对您发送的数据进行编码/解码(使用encodedecode功能)。对于许多标准类型(例如BinarySerializeInt和{},两者都带有序列化类的实例(分别为DoubleBool) {1}}。