

Show HN: A programming language that uses only parentheses - c4m
https://github.com/cammckinnon/Parenthetic

======
jbert
See also CPAN's Acme::Bleach module (language written only in whitespace).

As a bonus, the Acme::Bleach module will take an existing perl program and
convert it (overwrite it) with a version written in whitespace.

"The first time you run a program under use Acme::Bleach, the module removes
all the unsightly printable characters from your source file. The code
continues to work exactly as it did before, but now it looks like this:"

[http://search.cpan.org/~dconway/Acme-
Bleach-1.13/lib/Acme/Bl...](http://search.cpan.org/~dconway/Acme-
Bleach-1.13/lib/Acme/Bleach.pm)

~~~
draegtun
Interesting & related post on Perlmonks yesterday... _The History of
Acme::Bleach and Acme::EyeDrops_ \- <http://www.perlmonks.org/?node_id=967004>

Also relevant is Damian's Rod::Logic module. Unfortunately this hasn't reached
CPAN (yet!) but examples can be found in his talks (for eg:
[http://blip.tv/open-source-developers-
conference/temporally-...](http://blip.tv/open-source-developers-
conference/temporally-quaquaversal-virtual-nanomachine-programming-in-
multiple-topologically-4466153))

------
BasDirks

      Error handling
      
      If your program has a runtime error or a compiletime error the interpreter
      will print "Parenthesis Mismatch" to standard output and then exit.
    

Priceless. The sad thing is that most "modern" programming language offer
basically identical erro reporting.

~~~
emillon
_A friend of mine in a compiler writing class produced a compiler with one
error message ‘you lied to me when you told me this was a program’._ —Pete
Fenelon

------
ctdonath
Considering how numbers are represented, I'm reminded of John Horton Conway's
article on _Surreal Numbers_ , wherein he starts with an empty set and one
rule, and derives the totality of all numbers. Could make for an interesting
basis for a language.

~~~
dy9
<http://www.oocities.org/qpliu/conser/>

~~~
ctdonath
That...is awesome. Will take some time to wrap my head around.

------
SkyMarshal
This looks like somebody made a mistake using sed on lisp code accidentally
deleted everything but the parenthesis. I don't know which is cooler, this or
brainfuck.

~~~
zakhar
It could be an interesting problem to write a piece of code that performs one
task when run as a Lisp program and another when run as Parenthetic. Or the
same task even.

~~~
Xion
Bonus point if you also use interleaving whitespace [1] to hide yet another
program.

[1] <http://compsoc.dur.ac.uk/whitespace/>

------
avmich
In pure functional programming, so well mentioned in some PG's articles, you
have only functions - no numbers. You can make numbers from functions, though.
Then, you may have a basis - a set of functions which are sufficient to
represent arbitrarily complex algorithm, i.e., Turing complete set; see here -
<http://dkeenan.com/Lambda/> .

Such a set may consist from only one function. So, the whole program is a
structure of calling that function. Writing down such a program, we obviously
don't need to write the function - it comes by default; we only need to write
the structure, which can be represented by ( and ) . In a different way, than
what I see here, but still - one bit per parenthesis, very simple processor,
lots of memory and lots of steps for simple operations - a Turing tarpit...

------
drostie
I have two related ideas for a useless language, this is very close to the
first one.

The first idea is that you normally use at least 2 symbols for a programming
language, but you can in principle get away with just one. The "vanilla" form
of this idea is to use the length of the processed string as the instruction
itself -- that is, it has a bit pattern which gives you two symbols to play
with in principle. Of course that's pretty ugly so you can instead do
something slightly more "advanced" and use a non-character as a delimiter; the
most obvious choice is file boundaries on a filesystem, but in principle any
data structure boundary can be used.

The second useless language that I want to create is one which I'm not even
completely sure works. The idea is that you have some number of nodes -- let's
say 256 -- which each contain some number of bytes -- let's say 4. Those bytes
represent two (node pointer, instruction) tuples. These get initialized to a
definite 1KB prelude, and the computer starts at node 0. The instructions can
also manipulate registers and a much larger memory space, and can load ints
from that memory into other nodes, but the 1 KB is needed for the interpreter.

The idea for this useless language is that, the computer chooses one of the
two tuples randomly, performs its instruction, and then goes to the node it
points to. >:D

The basic idea is that all esoteric languages seem to be about "how do you
program familiar thing X if you don't have Y?", but I have 256 instructions so
I'll give you all sorts of wonderful functions to call on your registers. The
problem is really just that the computer does not natively want to follow a
deterministic path, and you have to "herd it" into that mentality.

~~~
TazeTSchnitzel
You might be somewhat interested in my esoteric language, DevPerc:
<https://github.com/TazeTSchnitzel/DevPerc>

------
saintfiends
I can pass subtle messages to astute readers by carefully crafting parenthesis
in blog posts. This should be fun.

------
samikc
If this is Lambda Calculus Tarpit like Turing Tarpit[1]? It seems like that to
me.

[1][http://en.wikipedia.org/wiki/Esoteric_programming_language#T...](http://en.wikipedia.org/wiki/Esoteric_programming_language#Turing_tarpit)

------
listrophy
My programming language that uses only ellipses got buried last week. Yes, a
programming language with one character, and no whitespace.

<http://listrophy.github.com/ellipsis/>

------
duck
Last week there was the semicolon language
(<http://news.ycombinator.com/item?id=3854130>), now parentheses. My guess is
next week we'll see the tilde language.

~~~
listrophy
See Ellipsis: <http://listrophy.github.com/ellipsis/>

------
roop
Cool. A Brainfuck-ish langauge, but more powerful.

I initially thought it would have been a pain to write just the test programs,
but I guess they were just programatically search-replaced from Lisp programs?

------
asmala
I am impressed by the purity. Takes homoiconicity to the next level.

------
tferris
Clojure 2

------
cafaro
Hey! I made a programming language that only uses 1s and 0s... oh wait, never
mind.

------
arunoda
Wow. The first ever modern langage I have seen in years. :+p

------
zupa
You are a complete idiot :D (good fun thumbs up)

------
chinnikrishna55
Whats the point!!

------
zalew
(.)(.)

~~~
hereonbusiness
exactly my thoughts, now I want a programming language that uses only boobs :)

------
maak
This made my day

------
debelbot
.-less

------
krsunny
(Why?)

------
jjaredsimpson
Seems like a "how can i design a bad intermediate language" project.

