Nathan Braswell
|
1d97366933
|
Implement user-interatction part of k_prime in new_kraken.kp, moved from load_test.kp
|
2020-09-17 23:28:45 -04:00 |
|
Nathan Braswell
|
62e991d0dd
|
Y combinator works, as well as vY (the vau version, which is different b/c applicative order), and prototype for new load style removing set works
|
2020-09-16 00:07:49 -04:00 |
|
Nathan Braswell
|
23910ba51e
|
Update web version, add a sharable try.html
|
2020-09-13 19:03:44 -04:00 |
|
Nathan Braswell
|
aa75269608
|
Working string interpolation!
|
2020-09-13 18:25:30 -04:00 |
|
Nathan Braswell
|
59c6bceb4d
|
work in progress string interpolation
|
2020-09-13 18:05:54 -04:00 |
|
Nathan Braswell
|
33d28fe1fa
|
Added {} bodies, C style function call, and Kraken-style fun
|
2020-09-12 21:34:23 -04:00 |
|
Nathan Braswell
|
54cffb4185
|
massage new constructor to be a function and add methods to both it and the new syntax
|
2020-09-08 23:30:56 -04:00 |
|
Nathan Braswell
|
ba64276630
|
Begin object/struct syntax & semantics
|
2020-09-08 00:25:41 -04:00 |
|
Nathan Braswell
|
3cb5c8d827
|
Add TCO option to BuiltinCombinator and convert cond and eval to use this, then rewrite self-hosted do so that it too is TCO. This allows us to self-host cond (which we did) so without worring about stack space for large arrays
|
2020-09-07 15:41:27 -04:00 |
|
Nathan Braswell
|
c0eca02e43
|
Update website
|
2020-09-06 22:10:59 -04:00 |
|
Nathan Braswell
|
0d07d22995
|
Move to wrap and unwrap
|
2020-09-06 12:19:19 -04:00 |
|
Nathan Braswell
|
8e47cb2ec2
|
Move to prelude and add enough to run bf (with modifications)
|
2020-08-29 00:33:04 -04:00 |
|
Nathan Braswell
|
241b4ca3f4
|
Implemented quasiquoting as a vau!
|
2020-08-28 00:38:16 -04:00 |
|
Nathan Braswell
|
a5f15f70f8
|
Fixed the eval issue for builtins mentioned last time, and undid lambda fix. Fixed it by unevaling in appropriate spots by wrapping in a call to quote, or equilivant. Map at least should be rewritten a language feature, for sure.
|
2020-08-20 22:57:01 -04:00 |
|
Nathan Braswell
|
94a24cb30f
|
Somehow forgot to commit rc all this time
|
2020-08-20 18:37:43 -04:00 |
|
Nathan Braswell
|
d69e77ee33
|
Added vector syntatic sugar [], set-idx!, and neatend up some of the self-implementation with the ' and [] syntatic sugar. Realized that currently most builtins pass arguments evaluated such that functions that they are passed really have to be vau instead of lambda. This includes both add_grammer_rule and more common ones like map, etc. I think I might have to undo my lambda fix in recognition of this. Anyway, either I have to pass arguments unevaluated or I need to swap to wrap/unwrap instead of my current lambda impl. It would be more like Kernel, and might make optimization etc easier, but I'm a tad worried about unwrap being exposed to the user / not forcing the more general optimization based on partial evaluation on myself (maybe doing this even makes optimization harder or less elegant?)
|
2020-08-14 22:37:03 -04:00 |
|
Nathan Braswell
|
8ea030547a
|
Finally commit earlier work now that I've fixed the bug where you couldn't use new syntax inside of functions because the inner closure struct was being corrupted and giving a null env. Now I use a nil env
|
2020-08-14 00:37:55 -04:00 |
|
Nathan Braswell
|
b292180a86
|
File loading and gradual evaluation
|
2020-07-21 23:30:08 -04:00 |
|
Nathan Braswell
|
9caf220aa1
|
Added print / string stuff, meta and with-meta, and the old add_grammer_rule
|
2020-07-21 22:56:29 -04:00 |
|
Nathan Braswell
|
45af192cee
|
Added in basic math, comparison, and boolean operations
|
2020-07-17 00:00:22 -04:00 |
|
Nathan Braswell
|
41c02d43ff
|
implement cond vector len idx concat - =, all as builtins, as an excercise implemented quote let1 apply rest map lambda fun, all in k_prime itself, proving you don't absolutly need wrap or apply as builtins (eval and vector manipulation functions suffice)
|
2020-07-13 00:48:01 -04:00 |
|
Nathan Braswell
|
38bf5edc35
|
implement set!
|
2020-06-30 21:59:11 -04:00 |
|
Nathan Braswell
|
a5f1355b63
|
Added eval, which I think completes the key vau parts - will have to see if I can construct lambda soon
|
2020-06-30 21:17:02 -04:00 |
|
Nathan Braswell
|
9f4dd92834
|
Add vau
|
2020-06-28 23:28:15 -04:00 |
|
Nathan Braswell
|
0a1cf4fb4d
|
Swap core vau/kernel style interpreter
|
2020-06-28 19:17:09 -04:00 |
|
Nathan Braswell
|
2efd3b5474
|
More object syntax
|
2020-05-13 20:58:20 -04:00 |
|
Nathan Braswell
|
722a72579a
|
Spelling
|
2020-05-12 21:30:37 -04:00 |
|
Nathan Braswell
|
bf53d3701f
|
spelling
|
2020-05-12 16:45:52 -04:00 |
|
Nathan Braswell
|
622aee0c75
|
Add fib example to web page
|
2020-05-12 16:36:07 -04:00 |
|
Nathan Braswell
|
c799cf485b
|
Massive updates to the website
|
2020-05-12 16:22:41 -04:00 |
|
Nathan Braswell
|
dac3e41101
|
Pass inputs to grammer callbacks as individual parameters
|
2020-05-12 09:33:33 -04:00 |
|
Nathan Braswell
|
8e296d57c8
|
Add atom syntax
|
2020-05-12 09:19:01 -04:00 |
|
Nathan Braswell
|
45ea718bc8
|
Add in atoms as length-1 vectors to bf.kp, next need to add in reader macros for them. Also the params from earlier
|
2020-05-12 00:40:36 -04:00 |
|
Nathan Braswell
|
29230404a3
|
Remove just a tad more of bf
|
2020-05-12 00:33:29 -04:00 |
|
Nathan Braswell
|
25801b3d3a
|
Add + and * to add_grammer_rule. Realized that rules should actually be passed to functions as params, with option for variadac, that will be up next
|
2020-05-12 00:32:12 -04:00 |
|
Nathan Braswell
|
77ce4095c0
|
Fix compiling varadic params, demo method syntax
|
2020-05-11 23:20:54 -04:00 |
|
Nathan Braswell
|
a7c0c3d78c
|
Lisp object system prototyped! Added necessary C functions and variadic support
|
2020-05-11 01:08:13 -04:00 |
|
Nathan Braswell
|
9aeadfc224
|
Add names to BuiltinFunctions so they can be compiled when used by reference, much less hacky and allows our new BF version to be compiled
|
2020-05-10 21:33:47 -04:00 |
|
Nathan Braswell
|
f10630c66c
|
First working object tests!
|
2020-05-10 19:29:28 -04:00 |
|
Nathan Braswell
|
3f501a5c2f
|
Added correct compiling of top level vector values, including with meta
|
2020-05-10 00:50:46 -04:00 |
|
Nathan Braswell
|
4cd7b22c86
|
Added set-meta! to interp and compile
|
2020-05-10 00:17:30 -04:00 |
|
Nathan Braswell
|
9ce70badab
|
added reference counted vectors in interp
|
2020-05-09 23:59:46 -04:00 |
|
Nathan Braswell
|
991a353805
|
Add compiling with-meta/meta for vectors only to C
|
2020-05-09 13:30:38 -04:00 |
|
Nathan Braswell
|
5d473d698d
|
Somewhat in the middle - removed list, added meta for interpreter, not yet implemented in compiler
|
2020-05-09 11:52:32 -04:00 |
|
Nathan Braswell
|
c5153c2977
|
add explanations of idea, links to paper, current status, and a tiny amount of CSS from https://bestmotherfucking.website/
|
2020-05-03 00:48:51 -04:00 |
|
Nathan Braswell
|
e6e053eaff
|
create rudimentary try-kraken-online
|
2020-05-03 00:10:09 -04:00 |
|
Nathan Braswell
|
c61b9d3c22
|
fixed closeing with strings
|
2020-04-25 13:05:56 -04:00 |
|
Nathan Braswell
|
e74c883132
|
throw and catch implemented
|
2020-04-23 13:04:27 -04:00 |
|
Nathan Braswell
|
ae150b17fa
|
Added atoms! atom, deref, swap!, literal support
|
2020-04-23 00:15:39 -04:00 |
|
Nathan Braswell
|
2baad06e8c
|
Add string literals and symbols, print support for both as well as lists and vectors
|
2020-04-22 21:10:46 -04:00 |
|
Nathan Braswell
|
19ae75b819
|
Fix the quoting compile
|
2020-04-20 01:22:45 -04:00 |
|
Nathan Braswell
|
d726705845
|
Add creation and indexing of lists and vectors, with their literal forms. Compiling quote has a bug though, and passes through - will have to consider how to fix
|
2020-04-20 01:16:34 -04:00 |
|
Nathan Braswell
|
b505c021f2
|
Implemented closures
|
2020-04-19 21:52:21 -04:00 |
|
Nathan Braswell
|
dff7306cc3
|
Change to raw string
|
2020-04-19 01:25:20 -04:00 |
|
Nathan Braswell
|
50817b567f
|
Fix my fact impl, add print and println
|
2020-04-18 13:36:46 -04:00 |
|
Nathan Braswell
|
cc833015c3
|
Can compile functions depending on other top level functions and values
|
2020-04-17 10:31:38 -04:00 |
|
Nathan Braswell
|
bed1871ad3
|
Check type of main return
|
2020-04-14 23:59:52 -04:00 |
|
Nathan Braswell
|
3141ad1d1d
|
parameters working
|
2020-04-14 23:53:12 -04:00 |
|
Nathan Braswell
|
ed01b5f580
|
Parameterless functions working
|
2020-04-14 23:34:23 -04:00 |
|
Nathan Braswell
|
8da9190b3d
|
Add type checking to make sure compiled lang is safe
|
2020-04-14 14:35:01 -04:00 |
|
Nathan Braswell
|
7cf8ca8b80
|
Function calls work, builtin functions operating on ints
|
2020-04-13 23:42:32 -04:00 |
|
Nathan Braswell
|
4b44277d30
|
emit if and true/false/nil constants
|
2020-04-13 22:55:25 -04:00 |
|
Nathan Braswell
|
05c77e3ad9
|
let* generated
|
2020-04-13 22:45:40 -04:00 |
|
Nathan Braswell
|
813d31cb2b
|
Working on C generator for k_prime, can compile single number return
|
2020-04-12 15:52:45 -04:00 |
|
Nathan Braswell
|
cb54429d1a
|
Remove keywords and maps from k_prime to make it leaner
|
2020-04-12 00:25:11 -04:00 |
|
Nathan Braswell
|
c4078aa5e1
|
added optional_WS back
|
2020-04-10 23:11:17 -04:00 |
|
Nathan Braswell
|
7a6a1e0d82
|
reformat
|
2020-04-10 23:08:31 -04:00 |
|
Nathan Braswell
|
721dc203be
|
Loop function can be simpler
|
2020-04-10 23:05:05 -04:00 |
|
Nathan Braswell
|
7bc58e904e
|
BF implementation as GLL macros
|
2020-04-10 22:46:53 -04:00 |
|
Nathan Braswell
|
256006f1c6
|
allow emtpy list, vec, dict
|
2020-04-02 14:47:50 -04:00 |
|
Nathan Braswell
|
80e31b8f6e
|
Forgot my io mod
|
2020-04-02 14:23:49 -04:00 |
|
Nathan Braswell
|
3591b90265
|
Also commit the syntax playground
|
2020-04-02 14:15:41 -04:00 |
|
Nathan Braswell
|
8eab986395
|
missed division
|
2020-04-01 11:54:05 -04:00 |
|
Nathan Braswell
|
b9adcdd3c6
|
Fix longest
|
2020-04-01 11:47:04 -04:00 |
|
Nathan Braswell
|
f70cc8030e
|
fix comment handling (including at beginning of files)
|
2020-03-31 15:46:03 -04:00 |
|
Nathan Braswell
|
ed33f967ce
|
Make adding grammer rules way more ergonomic from k_prime, implmeent reader macros with it now! Note I changed splice-unqote from ~@ to , as ~@ is legal as unquote deref and causes ambigious parses
|
2020-03-31 15:15:45 -04:00 |
|
Nathan Braswell
|
494e22007d
|
Fix hardcoded reader macros, add eval-read-string, fix niceness of whitespace between forms in repl and files. Next should be to redo the parser api to be way nicer from within kraken'
|
2020-03-30 19:51:01 -04:00 |
|
Nathan Braswell
|
a811b28bc1
|
SELF MODIFYING GRAMMER WORKS!
|
2020-03-29 22:07:55 -04:00 |
|
Nathan Braswell
|
40f0125ed1
|
whoops, messed up true,false,nil - were being parsed as symbols
|
2020-03-29 20:56:27 -04:00 |
|
Nathan Braswell
|
f86a6a600b
|
Remove old parsing
|
2020-03-29 20:49:50 -04:00 |
|
Nathan Braswell
|
ce7d228358
|
Use the new parser (now with reduction functions) for mal
|
2020-03-29 20:42:51 -04:00 |
|
Nathan Braswell
|
a9bb011bd9
|
Starting to make k_prime lisp grammer, doing testing to get all MAL test cases parsing
|
2020-03-28 00:23:01 -04:00 |
|
Nathan Braswell
|
1fa60a5496
|
Pretty printing of BSR
|
2020-03-27 18:35:32 -04:00 |
|
Nathan Braswell
|
676c0ded4d
|
IT WORKS
|
2020-03-27 00:16:16 -04:00 |
|
Nathan Braswell
|
3cef008a93
|
Now it compiles
|
2020-03-26 23:34:25 -04:00 |
|
Nathan Braswell
|
a10238e493
|
Parses (Kraken, not the parser ;) )
|
2020-03-26 22:08:39 -04:00 |
|
Nathan Braswell
|
6d1f3bb73f
|
fungll sketch
|
2020-03-25 22:55:57 -04:00 |
|
Nathan Braswell
|
2d6c1880ff
|
MaL implementation in Kraken
|
2020-03-10 12:57:28 -04:00 |
|
Nathan Braswell
|
2bc9ce497b
|
FINALLY FIXED THE PROBLEM - was using set instead of set_single, so it set it's child as well, causing the type loop. Also, the binding replace child evaluated the parameters first, changing t's parent before t->parent->replace_child happened
|
2019-07-13 18:01:04 -04:00 |
|
Nathan Braswell
|
148d70e2d4
|
Man, I was just missing initting to null and it would have run
|
2019-01-06 22:04:56 -05:00 |
|
Nathan Braswell
|
c2495a04f8
|
binding epochs compile, but segfault. too late tonight to keep going
|
2019-01-06 01:06:15 -05:00 |
|
Nathan Braswell
|
06df819e72
|
Port (though ineffecently) defer_lower!
|
2018-12-29 20:58:34 -05:00 |
|
Nathan Braswell
|
ed57d2b2a9
|
Added sizeof and fixed inferencing from explicitly instantiated template functions so that new and delete work! (though not traits yet...)
|
2018-12-29 16:35:47 -05:00 |
|
Nathan Braswell
|
235775c077
|
Basic veriadic, ext, and declaration only support, allowing us to use printf! Unifying with veriadic might need work (does it need ref treatment?)
|
2018-12-29 14:50:58 -05:00 |
|
Nathan Braswell
|
4ec59690cf
|
String value support
|
2018-12-29 13:32:32 -05:00 |
|
Nathan Braswell
|
eccc4c87a6
|
Finally, ref lowering! A little hacky, but not terrible...
|
2018-12-29 12:19:54 -05:00 |
|
Nathan Braswell
|
b356b793aa
|
Groundwork for ref_lower pass
|
2018-12-28 01:14:54 -05:00 |
|
Nathan Braswell
|
deda17e18b
|
groundwork for refs, moved ref indicator into fun type
|
2018-12-27 15:14:28 -05:00 |
|
Nathan Braswell
|
2cf4a2f664
|
emit structs with poset to fix C ordering. Structs might fully work now! Still need to do testing around templated versions and pointers
|
2018-12-27 00:59:26 -05:00 |
|
Nathan Braswell
|
ca082c29bd
|
Add in a top_level_type_resolve pass so that we properly have all the identifiers in our top level types resolved by the time we get to the meater resolve type passes, which may have to use them for scoping (with access op, etc)
|
2018-12-26 20:34:06 -05:00 |
|