Pretty.lhs: bug found, feature missed
Sigbjorn Finne
sof@galconn.com
Fri, 9 Nov 2001 10:18:05 -0800
(don't know if others are/have attended to this)
Hi,
thanks, I've committed the obvious fix for this one.
As for you other question, GHC's Outputable is one example
of a Pretty use which lets you prune documents at a certain
depth. The sources can be found in ghc/compiler/utils/Outputable.lhs -
maybe something in there that's of use to you..
hth
--sigbjorn
----- Original Message -----
From: "Johannes Waldmann" <joe@isun.informatik.uni-leipzig.de>
To: <glasgow-haskell-users@haskell.org>
Sent: Tuesday, November 06, 2001 13:40
Subject: Pretty.lhs: bug found, feature missed
> We were recently bitten by what seems to be
> a bug in hslibs/text/Pretty.lhs.
> The following code prints an infinite string:
>
>
> import Pretty
>
> ncat x y = nest 4 $ cat [ x, y ]
> d1 = foldl1 ncat $ take 50 $ repeat $ char 'a'
> d2 = parens $ sep [ d1, text "+" , d1 ]
> main = print d2
>
>
> I think this is due to the function indent/spaces
> called with a negative argument. The following is in Pretty.lhs:
>
>
> indent n | n >= 8 = '\t' : indent (n - 8)
> | otherwise = spaces n
>
> spaces 0 = ""
> spaces n = ' ' : spaces (n - 1)
>
>
> This looks Really Dangerous.
>
>
>
> Another point: we would want to use a version of `render (d :: Doc)'
> that always produces only a bounded amount of output,
> by cutting off sub-documents that are too deeply nested.
> (Some LISP pretty printers do have this feature -
> they cut long lists, and deeply nested lists).
> Before sitting down and trying to implement this, we would like to
> check whether someone already did it. If so, please tell us.
>
>
> Best regards,
> --
> -- Johannes Waldmann ---- http://www.informatik.uni-leipzig.de/~joe/ --
> -- joe@informatik.uni-leipzig.de -- phone/fax (+49) 341 9732 204/252 --
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users