gplz.:
The .: language consists of a file-and-directory structure. It is probably the most powerful and ambitious use of a filesystem yet.
Variables
If you want to assign integer values to variables, you must create a file: the filename is the name of the variable, the filesize is the content of the variable, and the file must have a creation date in 1991 to make it an integer variable.
If you want to assign string values to variables, you must create a file: the filename is the name of the variable, the file data is the content of the variable, and the file must have a creation date in 1992 to make it a string variable.
Files with creation dates outside [1991,1992] are ignored and can be used as comments.
At some point I had some confused ideas about representing more abstract data types such as "freedom", "justice", "equality for all" and "ass & tits" in JPGs, but then that would've probably created compatibility problems with female users.
Program Structure
A .: program is a directory tree with files. So, basically all your harddrives already out there are already potential .: programs. Maybe you've been unsuspectingly having a flexible word processor on your machine all the time and just didn't know it !
The files in each directory are sorted alphanumerically. Everything before a '.' in a filename (or directoryname) is ignored, so the following two expressions are really the same:
something.=
=
You can utilize this to force a sort order when you repeat the same instruction several times.
Assignment and Logico-Mathematical Operations
All the standard operations
=- equal, assign
+- add (also in the obvious
+=form) -- subtract (also in the obvious
-=form) _- multiply (also in the obvious
_=form) .- divide (also in the obvious
.=form) Apfelstrudel- = nand
are supported.
So, now that you've declared two variables (see
above), how do you add them ? Simply, by creating a directory named
+=, which contains two subdirectories with the names of the
variables to add.
How do you add a constant to a variable ? Similar, only one subdirectory and a file, sorted by filename.
Program Logic
What is known commonly as a WHILE-construct in
many a language, is called the KURT-construct in .:. This is Kurt
Weills fault - you know, Weill pretty much sounds like
While at least when I pronounce it, and if you're friends with Kurt
Weill, you can probably call him Kurt, so this is why the construct is called
Kurt and not While. It is the only program logic construct
supported in .: besides Apfelstrudel, which is not really a program logic
construct but rather a fine desert. (Even without sand).
The first subdirectory in a KURT directory specifies the actual condition, which can be either
=- equal
=- less than equal
Note: For less than, there is a
single space before the equal sign. That is actually more, so its a kind of
contradiction, which in turn is less than optimal. So there you go. Even if
you're still sitting in front of this.
There are other logic constructs, too:
| eiffelturm | if-then. The first subdirectory is the if-condition. |
| niemals! | until-do.The first subdirectory is the until-condition. |
| seltsam | if-then-else. The first subdirectory is the if-condition, the last subdirectory the else-statement. |
| sonderbar | if-then-unless. The first subdirectory is the if-condition, the last subdirectory the unless-statement. |
| sinnlos | if-then-provided. The first subdirectory is the if-condition, the last subdirectory the provided-statement. |
| nutzlos | while-do-unless. The first subdirectory is the if-condition, the last subdirectory the unless-statement. |
Example Programs
Somewhat unsurprisingly, there are none. But
you can take a look at this Python
program that will create a .: fibonacci program for you.
And here
is Hello, World in .: