We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Polynomix
Versions: 1 - 2 - 3 - 4 | 6 | 8
- This is still a work in progress. It may be changed in the future.
- This is not an esolang!
- Only User:I am islptng can modify this page's content (others can still fix errors). If you want to make suggestions, go to the talk page.
| Designed by | User:I am islptng |
|---|---|
| Appeared in | 2026 |
| Computational class | Turing-complete |
| Reference implementation | Unimplemented |
| Influenced by | APL Haskell Python |
| File extension(s) | .plx |
Polynomix is a powerful computer language designed by User:I am islptng.
It combines polynomials as first-class citizens with APL's array-oriented programming paradigm, Haskell's functional programming paradigm, and Python's dynamic typing.
- I briefly renamed to Polymorphix for accuracy, but I reverted. Turns out, being unique beats being correct. Polynomix is the one and only -- polynomials or not.
Data types & TypeString
TypeString is a string that represents the type of a value. It is used to annotate the type of a value in the source code. a TypeString always begin and end with $.
In Polynomix, there are 7 data types:
- Nil is represented by
; - Boolean is represented by
= - Character is represented by
" - Type is represented by
/ - Fraction is represented by
+ - Pair is represented by
,orl,rif typed - List is represented by
[]or[type]if typed - Lambda is represented by
>
Note that you can use () to group expressions in a TypeString.
Specially, Wildcard is represented by * or type1|type2|type3|... (| have a lower precedence than ,).
Syntax
Details is available at Polynomix/Symbols.
Operators (as functions)
Operators are functions that operate on one or more operands. They are defined in the language and can be used in expressions.
In Polynomix, expressions evaluate strictly from left to right, so a+b*c is equivalent to (a+b)*c instead of a+(b*c).
By adding a !, you can make any non-operator thing into a verb(operator), and any operator to a noun.
- Monadic:
x f!for f(x) - Dyadic:
a f! wfor a.f(w) - Tryadic+:
x f!(a b c d ...)for x.f(a,b,c,d)
Adding a # before the operator means assignment, for example: a #+ 1 for a+=1.