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 list0
returns its argument with0
prepended1
returns its argument with1
prepended
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).