Commit Graph

26 Commits

Author SHA1 Message Date
Nathan Braswell
e322fc7cd7 Finally correct again, but with the latest safety fixes no longer even evaluates the easier lets. The issue is that we're not executing combiners that use de if we don't have a real de (normally the enclosing function's se) because that's subject to the alpha-renaming problem. de is essentially a parameter, which is subtle and easy to miss when looking at the safety conditions, and indeed I did miss it earlier 2021-10-15 23:10:58 -04:00
Nathan Braswell
64c793d9f4 Flesh out the closes over test. Still doesnt' partial eval like we want, need to investigate why - have idea for specalizing function but do have to be careful with actual_function 2021-09-14 02:01:31 -04:00
Nathan Braswell
ec9083a958 Fixed bug with y, but still not partially evaluating the lets with later :/ 2021-09-12 01:37:07 -04:00
Nathan Braswell
f89b21420a Ok, figured out why let5 is failing and wrote down a plan of attack 2021-09-07 00:06:19 -04:00
Nathan Braswell
12271ff27c Bug fixed and back to state before refactor/rewrite. Need to get that darn let5 working now! That's why we did this 2021-09-06 23:00:04 -04:00
Nathan Braswell
873e7c4244 Working through the bugs, got the first few working 2021-09-06 12:29:05 -04:00
Nathan Braswell
6a47375d28 Ok, refactored the whole thing! It's now always operating on marked values with a mark step at the beginning, which should solve our stripping problems. It parses, but crashes, but it's 3am, so I'm saving and going to bed 2021-09-06 03:00:33 -04:00
Nathan Braswell
49d5a196aa 2 steps forward, 1 step back - I have arrays (and I think varargs) working, but let5_test is now not partial evaling as far as it should because of my fix. Detailed explanation in the comments, but it looks like we are going to have to insert that eval_strip hack, or somesuch 2021-09-05 00:25:33 -04:00
Nathan Braswell
b44ff104fb Implement variadic paremters, found additional bug for array, still need to handle recursion too 2021-08-26 01:03:36 -04:00
Nathan Braswell
26e9c5a41f Fix a bug in eval strip not actually stripping in the proper eval way - f there's a later anywhere in there, it has to desist, which is now implemented. Added do tests - we have to add support for & params, which I had forgotten, and I belive it now loops infinately because it tries to partially evaluate a recursive function! 2021-08-25 01:32:24 -04:00
Nathan Braswell
649e0107d4 And lambda is working nicely too, once I added support for val to the function call evaluaator (just looking it up in comb_to_mark_map) 2021-08-24 00:33:29 -04:00
Nathan Braswell
634812cea4 Got it working! 2021-08-23 23:43:47 -04:00
Nathan Braswell
2cd85a552d Some more tests and cleanup, looks like we're going to have to do either a try-eval thing or CPS-style partial evaluator, which I'm reading up on 2021-08-22 20:27:48 -04:00
Nathan Braswell
7700f0b709 FIXED THE BUG! 2021-08-22 13:03:33 -04:00
Nathan Braswell
c9e2e4659b Completely untested, but added partial eval for all array methods and and/or - this is pretty much everything! We don't bother with meta or error/recover right now though 2021-08-17 23:09:42 -04:00
Nathan Braswell
04f1c76bd7 Factored out parameter eval for some combinators and then added combiner? and env? 2021-08-17 20:31:07 -04:00
Nathan Braswell
47d5149400 Implement smart cond partial-eval 2021-08-17 18:17:42 -04:00
Nathan Braswell
772b984de0 Ok, more bugfixes & comments, and got eval working! 2021-08-17 01:19:38 -04:00
Nathan Braswell
e8747ef899 Bugfix and improvment, eval one works even though eval isn't implemented yet! 2021-08-16 11:54:05 -04:00
Nathan Braswell
62a238e041 Added wrap/unwrap and a vau test that uses wrap! 2021-08-16 01:20:10 -04:00
Nathan Braswell
550565a235 More vau usage working 2021-08-16 00:37:56 -04:00
Nathan Braswell
05092cba76 First vau-involved partial evals working! 2021-08-15 01:27:53 -04:00
Nathan Braswell
b3c02c82b3 Create and pass through comb_to_mark_map to allow us to re-mark stripped expressions so we can evaluate them mutliple times, etc, etc 2021-08-11 23:30:49 -04:00
Nathan Braswell
f09962ddc4 Add 2 parameter vau that discards dynamic env 2021-08-10 23:26:22 -04:00
Nathan Braswell
95b37da44e Ok, I think this is a correct? skeleton, implemented as much as I did yesterday 2021-08-10 22:56:12 -04:00
Nathan Braswell
e1fa65deaf Starting work on a partial evaluator - just sketching for now, needs a bunch of work and likely some foundational changes 2021-08-10 00:23:14 -04:00