You need to distinguish different types of implementations: 

1. An interpreter is a function that consumes a representation of your (J) 
program and determines its value (and output, if any). 
2. A compiler is a function that consumes a representation of your (J) program 
and produces a (hopefully equivalent) program in another language. 
        Then you run this second program on an interpreter for this second (aka 
target) language. 
3. A Racket embedding elaborates J programs (possibly parenthesized, possibly 
in original ugly syntax) into Racket and then Racket takes over. 
        What’s the difference to 2? You directly re-use the underlying language 
and you can build the language in an incremental manner writing incredibly 
small pieces of a compiler at a time. 

The efforts are vastly different, and so are the trade-offs. 


> On Feb 23, 2018, at 7:31 PM, Raoul Schorer <raoul.scho...@gmail.com> wrote:
> 
> Hi,
> 
> I am trying to write an interpreter for J in Racket as a hobby project.
> Would you guys know of good references on writing interpreters?
> 
> Some nice things I found:
> craftinginterpreters.com 
> <http://www.craftinginterpreters.com/introduction.html>
This teaches you how to write an interpreter (1). I’d also look at Shriram 
Krishnamurthi’s PLAI, which is also linked into the Racket web site. 

> beautifulracket.com <https://beautifulracket.com/>This is about Racket 
> embeddings (3). Great approach, everyone’s darling around here. 

> Racket J experimental package <https://github.com/lwhjp/racket-jlang>The docs 
> suggest that this is a truly strange approach, writing programs as strings 
> and then compiling them into Racket. If I misunderstood, the author of the 
> package should please speak up. 

I think approach 3 is your best bet to learn Racket and the capability of 
producing a language. 


> 
> Would you know of more?
> 
> Cheers,
> Raoul
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-users+unsubscr...@googlegroups.com 
> <mailto:racket-users+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to