Announce+Question: jDrIFT

John Meacham
Mon, 29 Apr 2002 01:44:08 -0700

I often finding myself going back to good old trusty DrIFT, and have
over the past few months made a number of changes to it, many of which i
think people would appreciate. I was wondering what i should do to get
my changes folded into the main drift, or even if there is a main drift
any more? 

new working features I implemented include:
 * proper GetOpt command line handling, allows you to specify an
   output file (-o) as well as list all possible derivations this
   version can use (-l) and some others.
 * proper LINE pragmas in generated code
 * smarter error handling in some cases, parser smarter sometimes.
 * can deal with/ignore as appropriate some ghc extensions now
 * new rule to derive Typeable used by the Dynamic library.
 * new rule to derive Observable from the HOOD object debugger
 * rules to derive Term, a term representation for generic
   computation, can be used in a similar fashion to the Strafunski one,
   but has a number of advantages, fully lazy constant time implode/explode
   being the main one. (the external library is compatable with their

and some other patches that i collected from around the net
jDrIFT -l lists the following:
	Binary, Typeable, Term, OldTerm, Implode, Explode,
	Observable, test, update, is, has, un, NFData,
	Eq, Ord, Enum, Show, Read, Bounded, Haskell2Xml 

features in the works:  
 * smarter rule format, allow descriptions (help info) to be embedded, and
  options to be passed into the rule generators either from the command line or
  in the DrIFT pragmas themselves. among other things, the code generation
  should be able to find out what extensions you wish to let them use and let
  them fail gracefully if one doesnt exist that is needed.
 * MultiParameter typeclasses
 * smarter/rethought import chasing rules.
 * LibDrIFT, simply write your single rule, import libdrift and it will
  build to a DrIFT module. these modules can be used standalone
  executables and behave just like the original drift (with your
  extension), but if placed in a searchable spot, the main jDrIFT
  implementation will pick them up and integrate their rules into its

In Any case i made a prerelease of my modified version available at:
but would like to somehow merge with the main development tree of this
tool, if one exists, if it doesnt look like that will happen then
perhaps i will have to branch to a new maintained DrIFT inspired

John Meacham - California Institute of Technology, Alum. -