
Beautiful Racket - samth
http://beautifulracket.com/first-lang.html
======
ivraatiems
One of my favorite classes in college was designed around building a C-like
language interpreter (not compiler, I know, but the syntax was C-like) in
Racket. It was a fantastic, eye-opening experience.

However, DrRacket the IDE was a huge pain for me. I often felt that what the
language offered in power and sophistication, its development environment
lacked.

~~~
harrisi
I haven't used DrRacket for anything of any reasonable size, but I actually
think it does pretty well. I was just asking some people on #racket about if
DrRacket suites their needs for a development environment. I think it's
interesting that a good number of Racket developers use DrRacket instead of
emacs or vim, whereas other Lisps tend to favor (especially) emacs and vim.

So my question is: What about DrRacket didn't seem like enough for your
project?

~~~
zodiac
I'm not who you're asking the question to, but I dislike DrRacket because
(when I used it last year) it took too long to load (iirc, intellij started up
faster and they have to support a lot more features)

~~~
cookiemonsta
The IDE i use (phpstorm) - i load it once, and it just sits in the background
until i restart or logout. I can't see how load time is really a big deal?
unless you're talking 5+ min?

~~~
lgas
It takes ~5 seconds on my macbook pro with just the standard set of tools
installed.

------
giacomone
> If a datum sounds like a syn­tax object, that’s no coin­ci­dence — a syn­tax
> object is just a datum with some extra infor­ma­tion attached. The #'
> pre­fix nota­tion we used for a syn­tax object now con­nects log­i­cally: we
> can think of the # as rep­re­sent­ing the extra info that gets attached to
> the datum

This is not clear, can someone explain please?

~~~
samth
Not sure which part isn't clear.

First, syntax objects are data, but with extra information, such as binding
information, source location, etc.

Second, the #' form (written out it's called `syntax`) is similar to the '
form (written out as `quote`). But the first one includes the extra
information to make a syntax object. Also, it has an extra character, which
the chapter points out can be seen as going along with the extra information.

~~~
analognoise
This is why I wish I could ask comments about books without going to Stack
Overflow. Is there a publishing system that allows you to put up a work as it
is being produced and solicit input from people on what they find unclear?

~~~
Nadya
Gitbook. I've used it for two small (unpublished) books.

[https://www.gitbook.com/](https://www.gitbook.com/)

E:

I may have misparsed your question, upon re-reading it and had an overly
liberal understanding of "solicit feedback". Apologies in advance if my answer
isn't quite up the alley you were looking for.

------
jnbiche
This looks like a very well-written, easy introduction to making simple,
dynamic programming languages (not surprising given the author's writing
background).

But everyone writes about how to build these kinds of basic Forths, or Lisps,
or reverse polish notation calculators. To be honest, once you've learned the
basic technique, writing a toy dynamic language interpreter is pretty easy.
Even adding a toy JIT isn't very hard, and there are multiple guides online on
how to do this using Luajit, or Libjit, PyPy, or LLVM, etc.

What I want more than anything is a guide written on the same level on how to
build a toy statically-typed language, with algebraic data types. And even
better, some basic discussion on how to learn about implementing advanced
techniques like refinement, or linear, or dependent types (I realize these are
extremely complex topics).

Every discussion I find on these topics is in dense academic papers. I'm
slowly making headway, but it's a slog.

The only good resource I've found so far (and it's an excellent one) is Andrej
Bauer's Programming Languages Zoo. But as far as I know, it's all (very
helpful and instructive) source code, with no accompanying tutorials.

Is there no very simple introduction on writing a simple ML, with type
checking? Any recommended resources?

It's possible that Butterick intends to cover these topics in later chapters,
in which case I can't wait to read the book.

~~~
jjtheblunt
There was a great textbook by Sam Kamin around 1990
([http://loome.cs.uiuc.edu/kamin/pubs.html](http://loome.cs.uiuc.edu/kamin/pubs.html)).
I think that might help.

~~~
mcguire
There is also an abandoned book on implementing Scheme by Paul Wilson:

ftp://ftp.cs.utexas.edu/pub/garbage/cs345/schintro-v14/schintro_toc.html

Yes, an ftp url.

------
jbeja
This is the only sane way to reduce complexity in your programs.

