Jules,
 
If you're looking for a text on implementing interpreters using functional programming languages, Essentials of Programming Languages by Friedman et al. is a good start. It uses Scheme instead of Haskell, but it might be helpful when you're reading Haskell code, like samples that come with the Parsec library, or Graham's Swish project.
 
Also, Autrijus Tang, the author of Pugs mentions a couple of textbooks that he found invaluable while working on Pugs, although I think they're at a more advanced level, so you might not want to start off with them: http://svn.perl.org/perl6/pugs/trunk/docs/01Overview.html
 
Davor

 
On 1/26/06, Graham Klyne <[EMAIL PROTECTED]> wrote:
I used Haskell to implement a kind of scripting language, and it seemed most
usable to me.

I particular, I liked the fact that it was possible to write a Parsec parser
that "compiles" script language expressions directly into executable Haskell
functions, avoiding the need for a separate interpretation layer, and because of
this I think performance is probably quite respectable.  Higher order functions
are, I believe, a real boon for this kind of work.

My work in this area is a bit stale, but can be found at:
http://www.ninebynine.org/RDFNotes/Swish/Intro.html
The particular module that "compiles" script language to functions is here:
http://www.ninebynine.org/Software/Swish-0.2.1/HaskellRDF/SwishScript.hs

The parser assembles a list of function that uses the "SwishState helper
functions" as primitives, and operate in the SwishStateIO monad - an I/O monad
that also incorprates some specific state that is used by my interpreter.
Upper-level functions are 'parseScriptFromString' and 'script'.

#g
--

Jules Jacobs wrote:
> Hi,
>
> I would like to create a scripting language, similar to Ruby, Perl and
> Python. Pugs, written in Haskell, is a Perl6 implementation. Is Haskell
> a good choice for me? I have no experience with Haskell (yet), but I
> like the concept of functional programming. Because Haskell will
> probably be too slow for the final implementation, I will have to
> rewrite it in C or maybe D. Haskell can be very useful as a
> test/prototype implementation, where speed is not very important. But
> will I be able to create a clean, and easy to understand implementation
> in Haskell? The scripting language will be object oriented, and
> imperative. Is that a problem because Haskell is functional, or is there
> be an obvious and nice way to implement an imperative scripting language?
>
> The language is very dynamic, and the source-tree needs to be in memory
> because it is modifiable at run-time.
>
> Would it be good to do this in Haskell, and port it to C if I like the
> implementation, or start in C? Keep the parser/lexer for the source code
> in Haskell, but port only the interpreter to C?
>
> What would be a good place to start? I am reading Yet Another Haskell
> tutorial, and I've read the first 6 of two dozen lessons in Haskell.
> What to do next, practice/read more/start with the implementation of the
> scripting language?
>
> Thanks in advance,
>
> Jules
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell

--
Graham Klyne
For email:
http://www.ninebynine.org/#Contact

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to