c9694af826
vm and compiler: removed automatic currying, and several other modifications to the language
main
haxala1r2026-05-10 17:23:42 +03:00
947d2274bb
vm: modified StoreLocal and StoreGlobal logic to be more consistent with the rest of the VM, and modified the emit module to emit a Pop instruction after every top-level expression.
haxala1r2026-04-26 01:20:05 +03:00
0925b44ef7
vm: got the VM to finally actually work
haxala1r2026-04-25 22:48:06 +03:00
5edcc974b6
binary: modify binary to make use of the new compilation pipeline
haxala1r2026-04-25 22:47:34 +03:00
4716c71b15
compiler: modify the Emit module to actually produce a vm_state object directly executable by the VM
haxala1r2026-04-25 21:04:49 +03:00
2b02740e68
compiler: add the initial draft for compiling into byte code with backpatching
haxala1r2026-04-25 20:46:28 +03:00
190ec94e14
compiler: make space for compiling into the VM bytecode
haxala1r2026-04-25 20:44:37 +03:00
fe3ad80826
vm: added noop instruction, various other improvements
haxala1r2026-04-25 20:43:55 +03:00
2822774931
vm: modified the vm to include native procedures, and changed the order of some parameters
haxala1r2026-04-25 00:08:54 +03:00
06d0b4d2bf
vm: wrote an initial sketch of a rough bytecode VM
haxala1r2026-04-24 19:10:14 +03:00
757df161d1
scope analysis: created another type to statically eliminate one (im)possible error case
haxala1r2026-04-05 23:14:29 +03:00
39ed14b33d
nix: change pkgs.mkShellNoCC -> pkgs.mkShell because a standard environment is required in a development shell as well
haxala1r2026-04-05 23:04:03 +03:00
3ae6a7491d
nix: add a separate shell.nix so I can specify merlin there without adding it as a build requirement
haxala1r2026-04-05 22:58:45 +03:00
4c573289b5
build: separated the nix flake and derivation, to allow for simpler builds and more flexibility
haxala1r2026-04-03 20:33:26 +03:00
ed4f49311c
syntactic_ast: unwrapped the central GADT into several related types. core_ast: related to the above, reorganized core_ast to use the new syntactic ast
haxala1r2026-02-02 20:32:15 +03:00
d41d8e5fbe
core_ast: add initial draft for the core ast, and a conversion function from the syntactic ast
haxala1r2026-01-07 20:02:10 +03:00
ec56d76fb3
syntactic_ast: modify the phantom types to have concrete constructors, as the ocaml compiler cannot prove them distinct otherwise
haxala1r2026-01-07 20:00:11 +03:00
be81061895
syntactic_ast: fix issue in set! parsing, add set! to the test case.
haxala1r2026-01-07 18:18:38 +03:00
e25b6b0b10
syntactic_ast: fix issue in cond parsing
haxala1r2026-01-07 18:17:24 +03:00
0d731f29b3
syntactic_ast: added a node for set! expressions
haxala1r2026-01-07 18:13:55 +03:00
54c48ddf0e
syntactic_ast: add node for if expressions
haxala1r2026-01-07 18:03:28 +03:00
edc9d8b9e6
syntactic_ast: added parsing and pretty printing for cond expressions
haxala1r2026-01-04 21:38:04 +03:00
e95a115acf
syntactic_ast: Added proper handling for Let and Letrec
haxala1r2026-01-03 21:35:27 +03:00
9fb29afc3e
syntactic_ast: Modified letrec forms to also accept a body
haxala1r2026-01-03 20:49:17 +03:00
17e533dbb8
Modified the GADT to distinguish bodies
haxala1r2026-01-03 20:43:11 +03:00
6d95977324
ast: improved the implementation of syntactic_ast debug: added debug functions for the syntactic_ast module Modified the compiler executable to test a little bit.
haxala1r2026-01-03 18:30:47 +03:00
cb94372f29
new ast: added a new syntactic_ast module that provides a more structured AST as a GADT
haxala1r2026-01-03 16:44:00 +03:00
bc7ca0fa2d
new library: added containers as a dependency.
haxala1r2026-01-01 13:36:09 +03:00
d401548d1d
Change the build workflow to run on cron activations as well
haxala1r2025-12-28 21:32:48 +03:00
77213ce492
Change build workflow to only run on push and tag events
haxala1r2025-12-27 18:21:19 +03:00
5afa613138
Change build workflow to also run the binary
haxala1r2025-12-27 18:17:29 +03:00
61a08c1b9b
Changed flake to use flake-utils and build for all targets
haxala1r2025-12-27 18:14:25 +03:00
d80caadc85
Added gensym, and phases in the desugar module for logical and & or
haxala1r2025-12-27 16:41:22 +03:00
be0d479665
Added desugar steps to add (begin) wrappers around long lambda bodies, and rewrite internal (define) forms into letrec forms
haxala1r2025-12-26 22:13:30 +03:00
4f1ad54596
Started work on the compiler, with a desugar phase
haxala1r2025-12-26 20:42:03 +03:00
e10124498e
Reorganize flake again, it should be good now
haxala1r2025-12-09 19:44:30 +03:00
64e52cd0cf
Added more math operations, generalized and simplified existing math operations, added some list operations for the lisp lists
haxala1r2025-11-06 23:02:16 +03:00
2f9501450f
Reorganized the standard library a little more, moved the initialization code for the standard environment into a function. Making way for more organization changes to come
haxala1r2025-11-05 23:55:21 +03:00
a45918d203
Added type annotations for the environment module to make things clearer, switched bind_args implementation with a simpler one.
haxala1r2025-11-03 23:00:46 +03:00
d0accebf73
Changed the addition and subtraction functions to be clearer
Emin Arslan
2025-10-16 22:28:11 +03:00
9b20547e84
Added def, changed naming, and added if expressions
Emin Arslan
2025-10-16 17:15:04 +03:00
dec68856f3
Evaluation is now performed properly, mimicking Common Lisp, and basic defun and defmacro definitions are provided (automatically executed on startup)
Emin Arslan
2025-10-14 22:26:00 +03:00
365595a345
Added dot syntax for lists, and proper quote syntax. LQuoted is now unused
Emin Arslan
2025-10-14 22:24:57 +03:00
df0b3178f0
Improved the repl to return to evaluation upon error. Also added an exit command
Emin Arslan
2025-10-14 21:06:11 +03:00
bb0ec74ee7
Added builtin special forms, lambda forms and bind-symbol. got rid of bind-function, as it is now unnecessary. it is now possible to create functions!
Emin Arslan
2025-10-14 21:05:10 +03:00
aaafe1c3e6
Re-organized a lot of code, changed functions so that functions capture the surrounding environment and execute in that environment
Emin Arslan
2025-10-14 20:21:29 +03:00