[Haskell-cafe] Generic Traversal of ASTs

Richard Yu richardyu042 at gmail.com
Wed Jun 2 05:02:43 UTC 2021


Multiplate actually looks very likely for my use case - I figured there
must be some prior work in this area that I had not found yet, so thanks!
As sort of a follow up, is there a quick way to try out all of these
libraries without having to setup a new stack project every time? I used to
use the arch packages to manually invoke ghc on small files, but that only
works if the package is on the aur so I was wondering if anyone had any
thoughts.

Thanks,
Richard

On Tue, Jun 1, 2021 at 1:17 PM Mario Blazevic <mblazevic at stilo.com> wrote:

> Have you tried Multiplate?
>
> If Multiplate is not powerful enough and you're willing to make your types
> more complex, have a look at deep-transformations.
>
>
> On Mon, May 24, 2021 at 4:52 PM Richard Yu <richardyu042 at gmail.com> wrote:
>
>> I have a question about generic traversal/transformation of nested data
>> structures. From what I understand the main options available are SYB,
>> Uniplate, GHC.Generics and Data.Lens (although I am under the impression
>> this requires record types). The data structure I am attempting to traverse
>> is similar to this simplified version:
>>
>> data SExpr = Expr | Const
>> data Const = B bool | I int
>> data Expr  = Lambda String SExpr | If Expr ...
>>
>> I have attempted to use Uniplate and GHC.Generics to traverse the built
>> AST and modify for example, the string of a Lambda type, but have not been
>> able to figure out how to get any of the libraries to typecheck. The
>> examples or docs I found were not quite enough. Does anyone know of
>> examples that might help or explain how I should be using the generic
>> libraries?
>> In addition if I moved to writing the AST with GADTs, do some generic
>> traversal strategies/libraries stop working?
>>
>>
>> Many thanks,
>> Richard
>>
>>
>>
>>
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>
>

-- 
Richard Yu
B.S Aerospace Engineering | B.S Computer Science
Gemstone Honors Program
University of Maryland, College Park
https://github.com/beForged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20210602/f28631de/attachment.html>


More information about the Haskell-Cafe mailing list