View Source Document

Philosophy.markdown

Philosophy of Tamsin

I suppose that's a rather heavy-handed word to use, "philosophy". But this is the document giving the whys of Tamsin rather than the technical points.

Why did you write Tamin?

Basically, every time I see someone use a compiler-compiler like yacc or a parser combinator library, part of me thinks, "Well why didn't you just write a recursive-descent parser? Recursive-descent parsers are easy to write and they make for extremely pretty code!" And what does a recursive-descent parser do? It consumes input. But don't all algorithms consume input? So why not have a language which makes it easy to write recursive-descent parsers, and force all programs to be written as recursive-descent parsers? Then all code will be pretty! (Yeah, sure, OK.)

Why is it/is it not a...

Meta-Language

(Also known, in their more practical incarnations, as "compiler-compilers" or "parser generators".)

Tamsin is one, because:

Tamsin isn't one, because:

Programming Language

Tamsin is one, because:

Tamsin isn't one, because:

Rubbish Lister

What does this even mean? Well, there is that one famous rubbish lister that we can use as an example for now, until I come up with a better definition here.

Tamsin is one, because:

Tamsin isn't one, because:

Batteries Included

Are batteries included? Or rather, what batteries are included? By strange coincidence, the batteries that are included are almost exactly the ones you'd expect to be useful in bootstrapping a Tamsin-to-C compiler: