Morc: Mock Arc Programming Language as Scheme Extension

Note: This is an incomplete implementation that I do not plan to pursue further. It is being released only for purposes of publicly archiving the work thus far, in case someone in the future might benefit from it. The current state of this is the result of two weekends of work, and then it was set aside due to other demands on my time. This work was done with PLT 360, and looks like minor tweaks would be required to get it to work with PLT 4. As I recall, I was last working on a namespace issue with PLT defmacro.

At the end of 2008-01, Paul Graham and Robert Morris made the initial release of the Arc programming language. There was no reference documentation, and as I read through the tutorial text file, I noticed a striking resemblance of Arc to Scheme -- Scheme, with lots of syntactic sugar, some Common Lisp-isms, some clever conveniences and shorthands that were inconsistent with Scheme. I strongly suspected that Scheme was used as a starting point for Arc. The similarities of Arc to Scheme inspired me to implement Arc as a set of Scheme macros and using a few extra features of PLT Scheme. It was in the course of implementing much of Arc that I noticed the siginificant differences. I decided to call my implementation Morc, as in "mock Arc," as in an imitation Arc.

The Morc implementation is cleanroom, based only on the Arc tutorial, what little tidbits I'd noticed in public information, and my own knowledge of various programming languages and theory.

Because Morc worked by expanding Arc code to PLT Scheme code, the PLT compilers could be used, which, incidentally, I suspected would make Morc much faster than the Arc reference implementation. That is not a criticism of Arc, as the authors stated at the time that the implementation was to be more of an executable informal specification than efficient.

I was planning on having the API reference for Morc double as a commentary on how Arc concepts relate to those in Scheme and other languages. Two perceptions I noted at the time were "Arc seems to value terseness, whereas Scheme values purity," and the even more inciting "You can do Arc in [PLT] Scheme, but not Scheme in Arc."

File test-morc.arc is the beginning of a test suite for Arc, derived from the original Arc tutorial.

Here are some instructions I wrote while developing this under PLT 360, which might or might not be correct. "To use, install the Morc .plt file. (If you don't know how to install a .plt file, see http://download.plt-scheme.org/doc/dotplt.html.) Start DrScheme. Select Choose Language... from the File menu, and choose Morc. Morc can also be invoked as mred -Z -z -M morc, such as from within Quack.

Please note that I've not touched any of the documentation, other than to add this Introduction for the release. "!!!" is my notation meaning that the documentation there needs work before release (since three exclamation marks together should never occur under any circumstance), and is usually followed by cryptic notes. Some of those notes allude to points I was intending to make in the annotated Morc reference documentation.

Good night, and good luck.

See code for additional information.

The current version of Morc is 0.1 (2008-08-31).

It can be obtained via PLaneT.

You can download file morc.html, documentation in HTML format.

You can download file morc.pdf, documentation in PDF format.

You can download file morc-lang.ss, the main Scheme file, for human reading purposes.

© Copyright Neil Van Dyke      Contact