Whitespace

Whitespace
Tutorial
Examples
Contributions
Download
Tools
Feedback
Mailing List
Explanation

Whitespace

What is Whitespace?

Most modern programming languages do not consider white space characters (spaces, tabs and newlines) syntax, ignoring them, as if they weren't there. We consider this to be a gross injustice to these perfectly friendly members of the character set. Should they be ignored, just because they are invisible? Whitespace is a language that seeks to redress the balance. Any non whitespace characters are ignored; only spaces, tabs and newlines are considered syntax.

What are the advantages of Whitespace?

Some things which are difficult in other languages are made much easier in Whitespace. For example, literate programming is simply a matter of writing your helpful comments in between program instructions. It's also easy to encrypt your programs. Simply write a misleading comment!

Whitespace is a particularly useful language for spies. Imagine you have a top secret program that you don't want anyone to see. What do you do? Simply print it out and delete the file, ready to type in at a later date. Nobody will know that your blank piece of paper is actually vital computer code!

What does a typical Whitespace program look like?

Below is an extract from a program which asks for a name then outputs it (see here for the full script.

  		 	
	
  	
  
	

Where can I get it?

There is a prototype Whitespace interpreter available on this site, go to this page to download it. The source code is written in Haskell, or you can get a Linux binary. You can also read a tutorial.

Who is responsible?

The interpreter was written by someone who shouldn't have stayed up so late, Edwin Brady, and the language was designed by two people who shouldn't have had so much to drink, Edwin Brady and Chris Morris. No doubt Andrew Stribblehill isn't entirely blameless either. Thanks also to the residents of #compsoc for their helpful suggestions and programs.


eb@dcs.st-and.ac.uk Released April 1st, 2003
Last Updated May 4th, 2004

Hosted by Durham University Computing Society