[Haskell-cafe] Generic Traversal of ASTs

Li-yao Xia lysxia at gmail.com
Wed Jun 2 11:17:29 UTC 2021


 > 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?


You can use "stack install" and "stack ghc" outside of any stack project 
(no "stack.yaml" in any preceding directory). It will read 
"~/.stack/global-config/stack.yaml", that's where you can set the 
resolver and add "extra-deps" for packages not on stackage.

Li-yao

On 6/2/2021 1:02 AM, Richard Yu wrote:
> 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 
> <mailto: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
>     <mailto: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
>         <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 <https://github.com/beForged>
> 
> 
> _______________________________________________
> 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.
> 


More information about the Haskell-Cafe mailing list