# Racket Implementation Details

**URL:** <https://racket.discourse.group/t/racket-implementation-details/2746>\
**Category:** Questions & Answers\
**Created:** [February 26, 2024, 5:06am UTC](https://racket.discourse.group/t/racket-implementation-details/2746 "2024-02-26T05:06:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rugged](https://avatars.discourse-cdn.com/v4/letter/r/5f8ce5/32.png) [@Rugged](https://racket.discourse.group/u/Rugged)\
**Post date:** [February 26, 2024, 5:06am UTC](https://racket.discourse.group/t/racket-implementation-details/2746/1 "2024-02-26T05:06:31Z")

</div>

Hi,

I want to make a racket implementation to learn about

- the implementation details,
- the software architecture ,
- the components involved Language Oriented Programming Approach
- design decisions / trade offs made with respect to other scheme implementations.  
What is the best way to achieve this? Any help is greatly appreciated.

Thanks

---

<div class="post-metadata">

**Author:** ![LiberalArtist](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/liberalartist/32/151_2.png) [@LiberalArtist](https://racket.discourse.group/u/LiberalArtist)\
**Post date:** [February 26, 2024, 5:19am UTC](https://racket.discourse.group/t/racket-implementation-details/2746/2 "2024-02-26T05:19:32Z")

</div>

> [@Rugged](#):
>
> I want to make a racket implementation to learn about … What is the best way to achieve this? Any help is greatly appreciated.

You might find this discussion useful:

> [@What would it take to write an independent Racket interpreter?](https://racket.discourse.group/t/what-would-it-take-to-write-an-independent-racket-interpreter/951):
>
> Hello all, I was curious what it would take to "reimplement Racket". As a Scheme derivative, it has a small core language[1], but this includes only the language and no standard library. I found a nice folder[2] of tables with about 1700 primitives in the Chez Scheme implementation that might suffice as the minimal standard library. It looks like the main language-level differences compared with e.g. SICP Scheme are: Syntax objects: (quote-syntax) Modules. Including multiple phases, since (…

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [February 26, 2024, 5:24am UTC](https://racket.discourse.group/t/racket-implementation-details/2746/3 "2024-02-26T05:24:10Z")

</div>

Welcome!

Help us narrow down the help that you are interested in. You say that you want to make a racket implementation. It sounds like that means that you want to develop your own implementation of the Racket language. That's a big project! Without knowing more about what your background is like, I would say you might want to start by writing a meta-circular interpreter for a subset of the Racket language, following e.g. Shriram Krishnamurthi's "Programming Languages: Application and Interpretation" textbook (free online), and maybe then moving on to Jeremy Siek's Compilers textbook.

Is this the kind of help you're looking for?

---

<div class="post-metadata">

**Author:** ![Rugged](https://avatars.discourse-cdn.com/v4/letter/r/5f8ce5/32.png) [@Rugged](https://racket.discourse.group/u/Rugged)\
**Post date:** [February 26, 2024, 5:32am UTC](https://racket.discourse.group/t/racket-implementation-details/2746/4 "2024-02-26T05:32:34Z")

</div>

> [@jbclements](#):
>
> You say that you want to make a racket implementation. It sounds like that means that you want to develop your own implementation of the Racket language. That's a big project! Without knowing more about what your background is like, I would say you might want to start by writing a meta-circular interpreter for a subset of the Racket language, following e.g. Shriram Krishnamurthi's "Programming Languages: Application and Interpretation" textbook (free online), and maybe then moving on to Jeremy Siek's Compilers text

I have quite a PL background

- I have finished SICP, Little Schemer series , EOPL, TAPL, ATAPL, Pragmatics of PLs and I also have strong background in Logic as well as Category theory.  
But I want to see a good document detailing the racket compilation flow, how racket is built in terms of layers in order to support the idea of LOP approach. Honestly I don't want to go through such a big project but I really want to see the magic in action if possible with a help of a debugger. And learn what I should know in terms of what is required in essence to make such an approach feasible in terms of implementation.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [February 26, 2024, 5:44am UTC](https://racket.discourse.group/t/racket-implementation-details/2746/5 "2024-02-26T05:44:09Z")

</div>

In that case, I would say @LiberalArtist 's linked post is probably a great place to start!
