Navigating 'Strategic' programming babel

Clearly Haskell has great possibilities in the field of language-processing. And the nuisances associated with little actual computation buried under much data-structure navigation are well addressed by 'strategic-programming' systems. But now comes the rub -- there seem to be a lot of very similar systems. Any guidance on which/what/how to choose? My own current sketchy-patchy knowledge is as below. I would appreciate links/pointers to more substansive literature. First there was Meertens and his folks working on generic haskell Did that later become template haskell? That branched out into strafunski, stratego/xt. SYB is ___ not sure here: some literature suggests that its identical to strafunski. Some suggests that it is strafunski done more within the haskell language rather than in libraries. Then there's uniplate. How does it compare to SYB? Or is that a confused comparison?

Hi Ravi,
You might want to browse through "Comparing Libraries for Generic
Programming in Haskell":
http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-010.pdf
SYB and Uniplate are two widely used and well-maintained systems for
strategic traversals over arbitrary datatypes. There are other options,
too, but it depends on exactly what you want to do.
Cheers,
Pedro
On Mon, Dec 17, 2012 at 11:30 AM, Ravi Sahni
Clearly Haskell has great possibilities in the field of language-processing. And the nuisances associated with little actual computation buried under much data-structure navigation are well addressed by 'strategic-programming' systems.
But now comes the rub -- there seem to be a lot of very similar systems.
Any guidance on which/what/how to choose?
My own current sketchy-patchy knowledge is as below. I would appreciate links/pointers to more substansive literature.
First there was Meertens and his folks working on generic haskell Did that later become template haskell?
That branched out into strafunski, stratego/xt.
SYB is ___ not sure here: some literature suggests that its identical to strafunski. Some suggests that it is strafunski done more within the haskell language rather than in libraries.
Then there's uniplate. How does it compare to SYB? Or is that a confused comparison?
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Mon, Dec 17, 2012 at 4:06 PM, José Pedro Magalhães
Hi Ravi,
You might want to browse through "Comparing Libraries for Generic Programming in Haskell": http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-010.pdf
SYB and Uniplate are two widely used and well-maintained systems for strategic traversals over arbitrary datatypes. There are other options, too, but it depends on exactly what you want to do.
My interest is language processing for which stratego, strafunski, UUAG etc are specially tailor-made. Yes Ive read the 'comparing libraries' paper in which it says that strafunski and SYB approaches are so similar that strafunski is subsumed under SYB for the purposes of that paper. However it seems that the strafunski-ecosystem being integrated with aterm etc, likewise stratego, are more suited to full-scale language processing.

Strafunski is now rather out of date - it was developed before Cabal
and used a custom install depending whether or not you wanted to use
the DriFt preprocessor.
Andy Gill has a "modern" re-implementation of Strafuski on Hackage called KURE.
Aside from SYB, Neil Mitchell's Uniplate is popular and generally well
documented.
On 17 December 2012 11:12, Ravi Sahni
However it seems that the strafunski-ecosystem being integrated with aterm etc, likewise stratego, are more suited to full-scale language processing.

I won't compare and contrast all these, but I want to point out that there
is a nicer version of uniplate in the lens package.
On Dec 17, 2012 5:31 AM, "Ravi Sahni"
Clearly Haskell has great possibilities in the field of language-processing. And the nuisances associated with little actual computation buried under much data-structure navigation are well addressed by 'strategic-programming' systems.
But now comes the rub -- there seem to be a lot of very similar systems.
Any guidance on which/what/how to choose?
My own current sketchy-patchy knowledge is as below. I would appreciate links/pointers to more substansive literature.
First there was Meertens and his folks working on generic haskell Did that later become template haskell?
That branched out into strafunski, stratego/xt.
SYB is ___ not sure here: some literature suggests that its identical to strafunski. Some suggests that it is strafunski done more within the haskell language rather than in libraries.
Then there's uniplate. How does it compare to SYB? Or is that a confused comparison?
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (4)
-
Jake McArthur
-
José Pedro Magalhães
-
Ravi Sahni
-
Stephen Tetley