New data structure match
WeirdConstructor
released this
31 May 05:33
·
436 commits
to master
since this release
This release adds one of the last big building blocks of WLambda: The new match
operation. It's quite fast, faster than using an if cascade of course.
Aside from that the pairs got an interesting new a => b
operator for
construction, which allows for syntactic sugar in some other places than just match
.
The stack space is finally dynamically grown now too.
- Incompatible Change: The nested parenthesis matching for quoted strings
was a bad design because you can't properly quote strings
with non matching parenthesis anymore - which is sometimes desired if a
regex pattern or selector pattern is to be quoted. - Incompatible Change:
a + b ~ c
is no longera + (b ~ c)
but(a + b) ~ c
to letiter i 0 => 10 ~ std:displayln i
work properly. - Incompatible Change: Removed old
match
function and replaced it with a
structure pattern match function, which is even faster than the match
before. - Feature: Allowing to use
if
instead of?
. - Feature:
iter $&&i ...
syntax implemented, for creating new references
for each iteration for easier closure generation. - Feature: Implemented pair operator
a => b
which does the same as$p(a, b)
. - Feature:
$iter $p(0, 10)
does now the same as$iter $i(0, 10)
, allowing
nice composition with the pair operator:$iter 0 => 10
. - Feature: Implemented argument function call operators
a &> f
andf <& a
,
so you can write regular expressions like? "foo" &> $r/a*b/ { ... }
without parenthesis. - Feature: Implementes structure patterns as complement to the selector patterns
and regex patterns:$M _expr_
. - Feature: Added a jump table operation
jump idx branch-a branch-b branch-c
as supporting operation formatch
. - Feature: Updates VIM syntax file
vim/wlambda.vim
. - Optimization: VVal size is down from 48 bytes to 32 bytes.
- Optimization: VM Op size is down from 40 bytes to 24 bytes.
- Bugfix: The stack size is no longer fixed and is dynamically grown if
required.