Commit Graph

1122 Commits

Author SHA1 Message Date
7f10d111ac Fix attempted in SuspendedPair, a lot more tests also work PE-wise now. Many are overflowing the stack, might be recursion causing or just really bad lack of tail calls, or a bug... 2023-02-20 00:22:29 -05:00
5107c1d7e4 Add in evaling of DeriComb, first let test in fib passes now (but not fib itself) 2023-02-19 23:16:10 -05:00
4d251964a2 Sketch combiner_return_ok and fix DeriComb ids 2023-02-19 20:33:09 -05:00
5df87a53cf Proper progress decisionmaking via NeededIDs and DCtx taking into account ids and hashes (not that we're storing hashes yet) 2023-02-19 19:28:48 -05:00
71326738fa First basic use of suspended lookup progress using the environment, basic tests passing again for pe 2023-02-19 18:52:39 -05:00
91e0641045 Split Ctx into BCtx (bi-directional ctx, must be returned) and DCtx (downwards-ctx, only passed down). Env goes in DCtx, so you don't have to play a replace-back game with ctx when returning from function calls. 2023-02-19 12:37:12 -05:00
283c0232b0 Some steps forward, some back - add sanity testing that eval(e,x) == parial_eval(ctx, x.unval()), start fixing the bugs it reveals, split SuspendedLookup into SuspendedEnvLookup and SuspendedParamLookup 2023-02-19 01:18:59 -05:00
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
3807381ceb Sketch out call-info, realized it and function-analysis needs pectx and also err threaded through it, since it can fail (which must be recoverable) and needs env and pectx for partial_eval inside 2023-02-02 01:18:17 -05:00
bea48eb18b Reviewing and making notes about analysises, looking to see if they can be implemented with a generic traversal or something 2023-02-01 01:01:37 -05:00
a038a8cebf Ensure proper env care during memo short circuiting 2023-01-31 22:54:53 -05:00
967ec0feb4 After too much procrastination trying a bunch of parentheses editing plugins (parinfer the most interesting), did a bit of actual work and refactoring where the compiled function is checked for and inserted using both the pre and post partial-eval hash, and the analysis functions are pulled out together into a single meta analysis 2023-01-31 00:59:16 -05:00
c20ba09179 clean up compile more, going straight to pulling out of memo, removing compile-body-part, removing now-unecessary recursion checking (for ping-pong between partial-eval and compile-inner because of how we now check memo and normalize), and finally add all tests to new_test.sh 2023-01-25 02:22:10 -05:00
7f9f419a23 Remove rest of comb rec_hash tracking 2023-01-22 00:41:29 -05:00
5a4cb4b40b Cleanup, remove some of the rec_hashes 2023-01-22 00:07:39 -05:00
dff6730dd9 Got partial-eval during compile working 2023-01-21 17:55:55 -05:00
0ed097b5b0 mix old and unstable 2023-01-16 22:14:41 -05:00
95f6dd867c Koka needs old emscripten sigh 2023-01-16 19:01:50 -05:00
94ae60f9d1 Merge branch 'master' of github.com:Limvot/kraken 2023-01-16 18:55:54 -05:00
b2f0b5f1dd Notes on todo 2023-01-16 18:55:52 -05:00
18b901b2f1 Start version experiments to narrow down if Koka or Emscripten is the problem 2023-01-16 18:54:34 -05:00
54f1092a2a Old sketches, start simpler benchmarks setup with Koka WASM 2023-01-16 15:32:45 -05:00
Sharjeel Khan
29a0266c67 Fixed deriv 2022-11-11 05:42:17 -05:00
Sharjeel Khan
d440260d1c Fixed cfold 2022-11-11 04:01:08 -05:00
Sharjeel Khan
4eb42d48f9 New Newlisps cfold 2022-11-11 03:53:13 -05:00
Sharjeel Khan
85f46f0e8d Test 2022-11-11 00:20:36 -05:00
Sharjeel Khan
2146ecd761 Commit current things 2022-11-11 00:20:05 -05:00
Sharjeel Khan
70f151222e Picolisp two examples 2022-11-11 00:19:32 -05:00