diff options
| author | Drahflow <drahflow@gmx.de> | 2014-03-26 00:48:47 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2014-03-26 00:48:47 +0100 |
| commit | 1bc64babd1405bfa70567d576cdef3e45b508b95 (patch) | |
| tree | b535d5bfb665b1422ef44e9bef087192b63b1b44 /elymas/lib | |
| parent | 08b33426f756a79b7500b0bea5597924def2bf87 (diff) | |
Container types
Diffstat (limited to 'elymas/lib')
| -rw-r--r-- | elymas/lib/list.ey | 69 | ||||
| -rw-r--r-- | elymas/lib/map.ey | 14 |
2 files changed, 83 insertions, 0 deletions
diff --git a/elymas/lib/list.ey b/elymas/lib/list.ey new file mode 100644 index 0000000..df5ba1c --- /dev/null +++ b/elymas/lib/list.ey @@ -0,0 +1,69 @@ +< + [ ] ==:NONE + + { -102 .len -021 ? } "#?" defmd + { .len } "#len" defmd + { 0 -01 .len range } "#dom" defmd + { [ 0 ] } _ "#in" deffd "#out" deffd + { ==m ==l + l .len { + l .start l .len 1 sub { 1 -01 * } rep + m .start 1 -102 =[] + l .len m .len add l .setLen + } { + m .start l .setStart m .len l .setLen + } ? * + m .end l .setEnd + + 0 m .setLen + NONE m .setStart + NONE m .setEnd + + l + } "#cat" defmd + { ==l =*f + l .start ==n + l .len { n 2 dearray =n f } rep + } "#each" defmd + { ==l l .len mod ==i + l .start i { 1 -01 * } rep + 0 -01 * + } "#*" defmd + { ==l ==i ==v + l .len not { "=[] into empty list" die } rep + l .start i l .len mod { 1 -01 * } rep + v 0 -102 =[] + } "#=[]" defmd + { ==l + list ==m + l .len { + [ 0 NONE ] _ m .setEnd + l .len 1 sub { [ 0 -102 ] } rep + m .setStart + l .len m .setLen + } { } ? * + m + } "#iclone" defmd + { 0 } "#istart" deffd + { .len eq } "#iend" defmd + { } "#itrans" deffd + { 1 add } "#istep" deffd + + { { ==l [ -01 NONE ] + l .len { + _ 1 l .end =[] + } { + _ l .setStart + } ? * + l .setEnd + l .len 1 add l .setLen + }_ [ 0 ] [ ] '' * } /append defmd + + { < + 0 ==len { =len } =*setLen + NONE ==start { =start } =*setStart + NONE ==end { =end } =*setEnd + > } +> -- /list deffd + +# vim: syn=elymas diff --git a/elymas/lib/map.ey b/elymas/lib/map.ey new file mode 100644 index 0000000..5c5b0f0 --- /dev/null +++ b/elymas/lib/map.ey @@ -0,0 +1,14 @@ +< + { .v -01 . } "#*" defmd + { [ 0 ] } "#in" deffd + { [ 0 ] } "#out" deffd + { .v keys } "#dom" defmd + { .v ==v =*f v keys { v -01 . f } each } "#each" defmd + { 0 } "#istart" deffd + { .v keys len eq } "#iend" defmd + { 1 add } "#istep" deffd + { .v keys * } "#itrans" defmd + { < < { defv }' > ==v "#=[]" =* > } _ "#iclone" deffd +> -- /map deffd + +# vim: syn=elymas |
