Log in Page Discussion History Go to the site toolbox

Eight

From BluWiki

Contents

Eight

Overview

Eight is a lisp variant designed with syntactic abstraction in mind; by unifying functions and macros into one structure and maintaining lexical scope, eight encourages code-writing-code more than any other language available. For an introduction to the reasoning behind it's invention, please see Better Questions.

Eight has a simple but powerful signal handling system, allowing for robust error handling.

Philosophical Manifesto

I am an artist, not a computer scientist. My goal is to make a programming language that evokes and emotional response as well as an intellectual one. I love beautiful code. Numinous code. Faberge code, hacked code, unexpected, unobvious, perfect code. Once, Brian W. Kernighan said this:

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."

I say Bull. I want a language in which I can code as cleverly as possible. Because I enjoy it. To hell with anything else.

What's the Difference?

  • First class 'macros': try (reduce and '(t t)) (or the equivalent) in any other lisp. You can't do it; 'and' is a macro, and cannot be passed to reduce. In eight, the operation works without a hitch.
  • 'Velcros': choose which arguments of a function are evaluated before binding, and which are bound to the code itself --- it's like having a lisp macro and a function mixed into one actor, in any combination you like. It's a maction. A funcro. A velcro.
  • Semiotic programming: Lexical scope and syntactic scope are rigidly maintained, up until the moment you request them not to be. Manipulate code, based on data that's been manipulated by code that's been... and never be confused by gensyms, syntactic-closure-building, or other nonsense.

What's Semiotic Programming?

Meta-linguistic abstraction is the ability to manipulate the syntax of your code using other code. It's a very powerful ability, that allows extremely easy development of domain-specific languages.

Semiotic Programming is a kind of meta-linguistic abstraction that purposefully manipulates both the syntax (which symbols are present in which order) and the semantics (the lexical binding of the symbols involved) of code.

In eight, semiotic programming is made possible by the closure algebra.

Influences

Eight is highly influenced by arc, Paul Graham's carefully designed lisp. I feel, however, that arc misses the true value of lisp; lisp is what it is because lisp code is lisp data. Enhancing that homoiconicity is the only way to continue in a uniformly positive way.

Site Toolbox:

Personal tools
GNU Free Documentation License 1.2
This page was last modified on 9 November 2009, at 21:04.
Disclaimers - About BluWiki