Katahdin - A language where syntax and semantics are mutable at runtime
chrisseaton.com
chrisseaton.com
However, my first thought upon reading the title of the link was about the comments that were going to appear here: either "lisp already does this" or "this will never be accepted as a mainstream language because it's too chaotic to the project."
Section 4.2.3 answered the question I was searching for: what happens in this hybrid model when an "interior" language fails to parse? It's all fun and games to strap on a new mini langage to your source file, but it's less fun and games when you misplace a paren. I wondered if the entire block threw a parse exception or if the whole file failed to load. It appears based on the skim-read that it's the later.
p.s. why is "270 version control commits" an achievement?
I don't mean to pry, but was he forced/drafted, or just a personal choice? Seems unfortunate to me.
Enjoy your journey, don't forget to keep hacking :-)
Cheers!
That seems like quite a copout.
Many Common Lisp runtimes compile things that you "eval" into native machine code when the eval statement runs. That is what the parent is referring to.
Many other languages have different "phases" of compilation. An example is Perl 5's BEGIN, which is Perl code that runs at compile time. This means you can write Perl to affect the compilation of the Perl program.
(Why would you do this? Here's an example. When loading the module List::Util, you want to be able to use its "first" function as though it was declared in your module. You can do this because List::Util can run some code at compile-time that installs the "first" subroutine into your namespace. Then as compilation (and runtime) continues, you will magically have that "first" subroutine in your namespace, and the program will compile properly.
If there was no ability to run code at compile time, then importing stuff from a module into the caller would have to be a language feature. Making the action of running code at compile time (and installing subroutines at runtime) makes it possible to implement this without help from the language author.)
I guess my question is, "what does Katahdin provide that Perl 6 doesn't" (leaving aside the .NET integration)?
The author with his degree?
A language that doesn't look like line noise?