Haskell的list类型应用很广泛,但不是做所有事情都适合用。List类型从头部取一个元素,或从头部插入一个元素的时间复杂度是O(1),如果随机访问任意位置的元素,则时间复杂度为O(n)。List类型如果求它的长度用length函数,则时间复杂度为O(n),所以如果判断一个List对象是否为空,最好用null函数,而不是判断length等于0。
Haskell在读写文件的时候,尤其大的文件的时候,最好不采用List数据类型。Haskell提供的Data.ByteString类型,可以用来比较有效率地读写大文件。
下面是一个应用Data.ByteString来分割合并文件的例子: