First, I love how you've chosen to have functions wait for the correct number of arguments to exist on the stack before executing. I've often pondered how to make Forth-like languages less painful to program - your solution is very clever!
Speaking of clever, I felt very clever indeed when I took your infix equality example:
| 42 == 42
[#t]
and it worked when re-ordered as postfix: | 42 42 ==
[#t]
...indicating two things: 1) I actually understood what was happening and 2) the language is coherent.It's great that basic IO so simple with 'say' and 'ask'. That allows somebody to jump in immediately and start making fun things!
| let name ask 'Who are you? ';
say $name
Love the syntax for lambdas: { ... }What is the rationale for requiring function implementations of the same name to have the same arity? Nevermind! I just answered my own question: because functions need to know how many parameters to seek from the stack.
The literal values for function arguments is awesome - pattern matching!
I don't understand this example demonstrating an "index" for the function parameter types:
func: baz(x y Int z T0) $x + $y + $z;
I assume 'T0' is the aforementioned index? But I'm struggling to see how it works from this example. Maybe I'm just missing an idiom from some other language?Bizarro Question: Is there any way you can 'delete' a function in the REPL? For example, to be able to re-use the name 'foo' as a function with a different arity. (It's fine if you can't. The ability would be useless in an actual program.)
You have an error in the README example for "Argument types may be specified in angle brackets...":
| &+<Int>
...
Error in row 1, col 6:
Func imp not found
But at least I was able to guess the correct syntax, yay!: | &+<Int Int>
...
[Fimp(+ Int Int)]
Dates: I'm confused about the lack of a function called 'year' (singular) since 'day' and 'month' exist. Otherwise, I'm impressed. Dates are damned hard.Everything about this language seems to be aimed at maximum brevity without sacrificing clarity. I like that a lot. Congratulations for getting this far and I'll definitely be bookmarking this.
I would love to see some longer programs written in Cixl to get a sense for what they look like and how they'd be structured.
How long have you been working on this? How long have you been dreaming about it? And how it is pronounced (SIX-el, KIX-el)?