
007, a small experimental language with a license to macro - jsnell
https://github.com/masak/007
======
masak
Author here. Thanks for all the kind words. README files are important, and I
worked quite a bit on this one. Had some fun writing it.

A quick summary of the language itself: I felt I needed a smaller language
than Perl 6 to "think" in as I mapped out exactly what we want from macros. If
you're curious about the latest shape of that thinking process, you'll want to
read
[https://gist.github.com/masak/13210c51f034f931af0c](https://gist.github.com/masak/13210c51f034f931af0c)
.

Implementing 007 has been a fun thing, and largely easier than I thought.
Mostly bottlenecked by available tuits. Somewhat surprisingly, I found it much
tougher going to implement _user-defined operators_ than to implement
_macros_. (But now that we have both, you can also haz custom operator
macros!)

Next up, I plan to use 007 to map out as much of the terrain as possible
covered by that gist above. That is, I want 007 to get synthetic Qtrees,
really good handling of hygiene and lexical scoping, statement macros, _maybe_
multis if I feel it's worth the trouble, introspection of Qtrees, and visitor
macros.

------
mdcox
For those interested in seeing the language, the README has a link to the
tutorial ( [http://masak.github.io/007/](http://masak.github.io/007/) ) hidden
at the very bottom of the (highly entertaining) narrative.

~~~
akkartik
Aw c'mon, it was a gripping read until the end and then.. no unquote?!

~~~
masak
Oh, we'll get unquotes, don't worry. It's more a question of not-yet-
implemented than anything else.

Here I might as well ask HN what syntax I should go with for unquotes in 007.
In Perl 6, unquotes are written as three nested braces: {{{$ast}}}

Almost no-one is happy with that syntax. It manages to be _distinctive_ (and
can be easily syntax-highlighted, too) but pretty it ain't.

The difficulty of finding something better is that it has to be orthogonal to
basically all other syntax in the language. And that's a challenge in Perl. :)
People keep proposing Unicode sigils and stuff, but I haven't seen something I
like yet.

------
raimue
I have to admit I did not even look at the language itself, the README made me
upvote this.

------
mappu
Definitely more engaging than the usual "made with love" bootstrap website.

------
dropit_sphere
That README was amazing.

~~~
perlgeek
Another project with an awesome README by the same author:
[https://github.com/masak/ufo](https://github.com/masak/ufo)

------
crocal
I don't understand a clue of what this macro thing is, but let's upvote this
and every comment made by principle.

------
i336_
Can confirm, this is how READMEs should be done.

------
igl
First time i read a README from first to last word. Good job!

------
tmd83
It sure was something different to read :)

