[Haskell-cafe] Defining Haskell using "arrows"

Andy Elvey andy.elvey at paradise.net.nz
Sat Nov 6 13:28:50 EST 2004


Hi all - 
   I'm a first-timer here, and am *very* much attracted by Haskell's elegance 
and power ... :-)  
  I have only poked around briefly with Haskell so far (at the "hello world" 
level).  One thing that I have come across, and which really got me thinking, 
was the page on the Haskell website about "arrows".  They really seem to take 
elegance and the "generic-ness" of algorithms to a new level.  
  I was thinking - arrows are a relatively recent concept.  Haskell's grammar 
(as defined in the Haskell report) has now been around for quite some time. 
So - I thought "what if?"  What if Haskell were to be defined (er, 
*re*-defined) in terms of arrows?  In other words, what if it were possible 
to start totally "from scratch", re-defining Haskell's grammar using arrows? 
(and preferably, *only* arrows ... ). 
  This would presumably involve somehow coding up the arrows first, and then 
(haivng got them), using them to create/define the rest of the language. 
  My reason for suggesting this - simply to see if it were possible to do a 
very small (but still quite comprehensive) Haskell implementation. Small 
meaning maybe 2-3 MB or so ...  As an interesting "benchmark" of this, the 
Rebol language (though proprietary - sigh!) - comes in at 0.5 Mb or so, 
including a GUI.  So, "very small but very powerful" is possible (although 
undoubtedly pretty difficult ... ) 
  As a Haskell newbie, I have to defer to everyone else on this list (in terms 
of my Haskell ability), but just thought I'd post this idea anyway.  I was 
thinking " I wonder if anyone has thought of this? ....... " .  
  Arrows seem to be a recent "add-on", as it were, so I thought  -given their 
power and flexibility, why not turn things totally around, and put them at 
the *very core* of the language, using them to define the language itself.  
  Anyway, I'm keen to hear people's thoughts on this!  Very many thanks in 
advance ...  :-) 
  - Andy 
 


More information about the Haskell-Cafe mailing list