On Thu, Apr 12, 2012 at 6:22 PM, Antoine Latter <aslat...@gmail.com> wrote:
> Hi Warren,
>
> On Thu, Apr 12, 2012 at 6:31 PM, Warren Harris <warrensomeb...@gmail.com> 
> wrote:
>> I wrote a parsec parser that does symbols lookups during the parsing process 
>> (ParsecT String Store IO a). Now I'd like to write a pretty printer that 
>> does the reverse. Unfortunately there doesn't appear to be a transformer 
>> version of Text.PrettyPrint.HughesPJ. Can anyone suggest a way to do this? 
>> Thanks,
>
> It seems like the opposite would be a function of type 'a -> Store -> IO Doc'.
>
> Maybe a function of type 'a -> ReaderT Store IO Doc' could be easier
> to work with.
>
> If you go this route you could write a lifted versions of (<>), (<+>), hcat 
> etc.
>
> An example:
>
> (<>) :: Applicative m => m Doc -> m Doc -> m Doc

On this note, there are various Wadler-Leijin pretty printers variants
on hackage, some lifted into a monad so you can do effects, IO, or
whatever.  E.g. wl-pprint-extras.  In my experience though WL gives
worse results than H-PJ despite having some more powerful operators.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to