fdaca7f807
Implement basic derived calls, and fix eval not unvaling bug
2023-02-19 00:46:54 -05:00
c5f7a52a38
Implment basic function calling pe
2023-02-18 22:46:23 -05:00
b893787a1b
move towards just MarkedForm (with no Value(Form)), with Attempted and MarkedIDs, and sketch out the MarkedForm::PrimComb versions of all the primitives with translation from PrimComb
2023-02-18 19:32:59 -05:00
8b59d5a16a
reorginze, start sketching partial eval
2023-02-16 18:21:13 -05:00
520e473415
Add RBTREE and test, along with <, >, <=, >=
2023-02-14 13:18:19 -05:00
f568ee3d50
Add len, finish match
2023-02-14 12:47:48 -05:00
66fc1db606
Implemented Display for Form, then first sketch of MarkedForm, NeededIds, and unval, and Display for MarkedForm
2023-02-14 00:50:05 -05:00
ad3c251ba9
implement non-varidic and/or and start porting match. Need to make and/or varidac and continue match work
2023-02-13 01:08:34 -05:00
3df7d6e0ec
Finish converting into individual tests (mostly) - might need to split out and uncomment some should-fail tests
2023-02-13 00:42:54 -05:00
e9b8f636cf
Start splitting out the tests into multiples, with the library code at top level in once_cell's Lazy
2023-02-12 16:16:59 -05:00
5838cf0bdd
Added 'assert', and changed match_params to assert that when the param tree is nil so are the passed params, which should handle exact length for functions etc.
...
Added unwrap, lapply, array, the Y combinator, and rlambda. Y and rlambda were almost verbatim copies from old Kraken, with a change for how variadic functions are declared ( '( & args )' vs 'args' ) and a name change.
2023-02-12 13:30:45 -05:00
5512ab8804
Fix warnings, add destructuring let1
2023-02-12 12:19:56 -05:00
30964bf4ec
Better BVAU, which does full trees-of-symbols destructuring with varidic support!
2023-02-12 11:56:32 -05:00
c028e975d4
Add wrap, vfoldl, zipd, concat, bvau, and lambda! Need to add varidac handling to bvau, but getting tired
2023-02-11 00:34:24 -05:00
1b813e39fb
Fix vapply bug, write vmap, add debug
2023-02-10 23:05:08 -05:00
606972a38b
Implement vapply, got around the ever-growing environment
2023-02-10 22:34:04 -05:00
3c2dfbf8a7
Add tail call recursion - works, but if a datastructure is too deep (say, because env keeps growing on the heap) Rc::drop will end up overflowing the stack when trying to deallocate
2023-02-10 19:38:44 -05:00
ba67b8c67b
Add "!" syntatic form - a bit like the single quote, but !(a b c) d => !(a b c d). Useful for like !(let a 1) (+ a 3) or w/e. Break out some of the infinate nesting"
2023-02-10 01:01:04 -05:00
3b5cc2c506
Implement a new style of let1 based on direct env manipulation
2023-02-09 01:20:19 -05:00
02e359f42d
Finish out the basic primitives along with testing infra for both parsing and evalaution, with some slick Into<> impls to make Rust values Kraken values, which is esp useful for testing
2023-02-08 23:37:23 -05:00
d861d91397
Fix ', add if and = along with bools
2023-02-08 01:54:53 -05:00
c801f604c2
Add derived combiners and fix some bugs with eval, vau, quote, cons, car, cdr
2023-02-07 13:00:15 -05:00
60dad101f8
Speed sketch beginnings of a Rust implementation of new stripped-down Scheme-like Kraken
2023-02-07 02:07:53 -05:00