Baulk
Baulk was an attempt to by User:yayimhere create a functionally pure esolang, that does not place its basis within Lambda calculus. it came out to be a sort of string rewriting language, however the string rewriting is a lot more complex than simply rewriting.
Full description
Basic operation application
most Baulk operators follow the structure op[inp](or op[inp1][inp2]... ect, if you want multiple inputs), though this, however rare, is sometimes broken. inp is allowed to be empty, or anything else
Evaluation
Baulk evaluates quite normally compared to other languages, however specifics are provided:
- all expressions that can be evaluated without affecting things that would not be evaluated.
- everything that cannot be evaluated(this includes "invalid" code), is not evaluated. this includes operators with inadequate inputs, or non code text.
- Every program is looped over until nothing can be evaluated further
- if a would-be operators input is being used by another operator, is does a › until an input is found
Operators
this is more so a rewriting table than a description, but some commands do have descriptions. e is the empty string and … is the expression(so either the rest of the program, or something within brackets) to the left or the right of the command.
| Op+in | result | description |
|---|---|---|
*[x] |
*[x x] OR e |
chooses the second option if x is empty. |
`[x] |
`[x] |
stops x from being evaluated until the eval function is used on it. |
'[x] |
x |
eval x |
¯[x] … |
x[…] |
* |
^[x] |
x[^] |
* |
;[x] |
x |
identity |
.[x] … |
x .[…] |
* |
º[x] |
x x |
copy |
+[x][y][z] |
[x]z[y] |
* |
·x y |
[x][y] |
give each individual object brackets |
~[x] … |
…[x] |
* |
-… |
e |
removal of an expression |
(x) |
brackets/separators | |
x› y z |
x z y |
x takes the n+1'th input, where n is the number of ›'s, instead of the first on given(n+1 because a single › would be n=1, which is the first input given) |
…‹z |
… |
replace all instances of the n'th non command char within … with the char z, where n is the number of ‹'s |
(space) |
e |
spaces are interpreted as non existent within the program(for example x[y] and x [y] are the same) |
{…} |
grouper. forces symbols within to always be next to each other. this does not change such things as application or execution order |
Examples
{y^}[{x^}]