Haskell: Does ghci show “Chunk .. Empty”?

只谈情不闲聊 提交于 2019-12-22 04:54:30

问题


Learn You a Haskell has a code example like this:

ghci> B.pack [99,97,110]  
Chunk "can" Empty  

(B stands for Data.ByteString.Lazy)

But my ghci does not show Chunk and Empty data constructors.

> B.pack [99,97,110]  
"can"

Did Haskell developers change the way the values of ByteString are printed?


回答1:


Looks like Duncan added hand-written Show instance for lazy ByteString somewhere between 0.9.2.1 and 0.10.0.1. See http://hackage.haskell.org/packages/archive/bytestring/0.10.2.0/doc/html/src/Data-ByteString-Lazy-Internal.html#ByteString

Add: Here is the relevant patch




回答2:


Old versions of BL.ByteString simple have a deriving Show in their data declaration. This results in the GHCi output as shown in LYAH, and ensures the output is valid Haskell code. The nice plain string "can" isn't really a valid Haskell representation of that bytestring – that is, not a valid Haskell 98 representation. However, it is common to use {-# LANGUAGE OverloadedStrings #-} in modules that use bytestrings, which makes it valid. Which is probably the reason that there is now (since 0.10) this nicer-to-read manual instance.



来源:https://stackoverflow.com/questions/17305832/haskell-does-ghci-show-chunk-empty

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!