Pointless.
Pointless is a point-free variation on 01_.
A Pointless program is a Pointless expression, which is a function that takes a list of bits and returns a list of bits.
Syntax
program = expr, "." ;
expr = compose | let | if | function ;
compose = expr, expr ;
let = "LET", identifier, "=", expr, { ",", identifier, "=", expr }, "IN", expr ;
if = "(", expr, ",", expr, ",", expr, ")" ;
concat = "(", expr, ",", expr, ")" ;
function = identifier ;
Identifiers are consecutive sequences of non-whitespace characters, excluding (, ), ,, =, and .. Also, LET and IN are reserved and may not be used as identifiers. Whitespace separates identifiers and is otherwise ignored.
Comments begin with == and extend to the end of the line.
Expressions
Compose
f g
This is a function that returns the result of applying f to the result of applying g to its argument.
Let
LET f = (_,0,1) IN f.
A LET expression binds one or more identifiers, which may be referred to in the body of the expression or in the bodies of the bindings. Bindings in a LET may shadow bindings in any enclosing scope, including the initial scope. This function is the body of the LET expression, f in the above example.
If
(f,g,h)
If the argument of this is an empty list, it returns the result of applying f to its argument.
If the head of the argument is 0, it returns the result of applying g to the tail of its argument.
If the head of the argument is 1, it returns the result of applying h to the tail of its argument.
Concat
(f,g)
This is a function that returns the concatenation of the result of applying f to its argument and the result of applying g to its argument.
Function
A function may be an identifier bound in an enclosing LET expression or bound in the initial scope. The initial scope consists of
_ignores its argument and returns an empty list0returns its argument with0prepended1returns its argument with1prepended
Examples
Hello world
0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 _.
Cat
(_,0,1).