# Is it possible to study the Wizard Book in Julia?

**URL:** <https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232>\
**Category:** New to Julia\
**Tags:** question, metaprogramming, discussion\
**Created:** [October 4, 2022, 1:41pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232 "2022-10-04T13:41:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![VincentFerrigan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vincentferrigan/32/39177_2.png) [@VincentFerrigan](https://discourse.julialang.org/u/VincentFerrigan)\
**Post date:** [October 4, 2022, 1:41pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/1 "2022-10-04T13:41:55Z")

</div>

Hi

I would love to study [SICP](https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs) (and even [HtDP](https://en.wikipedia.org/wiki/How_to_Design_Programs)) one day. It would be magnificent if it was possible to do it all in the _Julia REPL_, _Pluto_ and/or _Jupyter_. I wonder if it’s possible to write _Scheme code_ in Julia.

Would it be possible to write Scheme code directly in the Julia REPL, in Pluto and/or in Jupyter?  
…or, should I try to write it all in “plain” Julia instead? Is that even possible?

Any thoughts? Has anyone tried to pursue this?

/V

---

<div class="post-metadata">

**Author:** ![johnmyleswhite](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnmyleswhite/32/31_2.png) [@johnmyleswhite](https://discourse.julialang.org/u/johnmyleswhite)\
**Post date:** [October 4, 2022, 1:45pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/2 "2022-10-04T13:45:04Z")

</div>

What’s the value of writing Scheme inside of Julia rather in a separate process? Does it manipulate Julia data structures like [here](https://github.com/swadey/LispSyntax.jl)? Or is just a separate Schema process inside of Julia?

---

<div class="post-metadata">

**Author:** ![VincentFerrigan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vincentferrigan/32/39177_2.png) [@VincentFerrigan](https://discourse.julialang.org/u/VincentFerrigan)\
**Post date:** [October 4, 2022, 1:50pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/3 "2022-10-04T13:50:57Z")

</div>

Thank you for your swift reply!

Basically, to try out the examples and do the exercises in Pluto.

---

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [October 4, 2022, 1:59pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/4 "2022-10-04T13:59:27Z")

</div>

Pluto does not support other languages in any pleasant to use way. There are libraries that let you access some of Python and R through Julia, but none for scheme.

Your best bet is probably using a scheme kernel for Jupyter. This is the only one I could find (no idea how supported it is) [GitHub - Calysto/calysto\_scheme: A Scheme kernel for Jupyter that can use Python libraries](https://github.com/Calysto/calysto_scheme)

Julia itself is inspired by lisp and it suports macros. If you are happy with a non-lisp-syntax lisp, then doing these books directly in Julia might be a fun endeavor.

---

<div class="post-metadata">

**Author:** ![gbaraldi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gbaraldi/32/22101_2.png) [@gbaraldi](https://discourse.julialang.org/u/gbaraldi)\
**Post date:** [October 4, 2022, 2:27pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/5 "2022-10-04T14:27:43Z")

</div>

You could try and just adapt the code. SICP does use recursion a lot and julia doesn’t have TCO so there might be issues with this. So stuff that is represented by recursion might need to be adapted. But some concepts for sure are shared.

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [October 4, 2022, 2:41pm UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/6 "2022-10-04T14:41:33Z")

</div>

This sounds like a decent excuse to run `julia --lisp` but you will get a very rudimentary REPL.

```julia
$ julia --lisp
; _
; |_ _ _ |_ _ | . _ _
; | (-||||_(_)|__|_)|_)
;-------------------|----------------------------------------------------------

> (+ 3 5)
8

```

---

<div class="post-metadata">

**Author:** ![VincentFerrigan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vincentferrigan/32/39177_2.png) [@VincentFerrigan](https://discourse.julialang.org/u/VincentFerrigan)\
**Post date:** [October 5, 2022, 6:17am UTC](https://discourse.julialang.org/t/is-it-possible-to-study-the-wizard-book-in-julia/88232/7 "2022-10-05T06:17:13Z")

</div>

I think I am going to try to do both. Write both in Scheme and in Julia (i.e. an adaptation), side by side. As a learning experience. Would be nice to use Jupiter for that if possible.

By the way, MIT Press published this year (2022) a JS adaptation of SICP! Sounds both wildly crazy and interesting. In a good way. Something to try out after the original (2nd) edition
