diff --git a/fib_test/builtin_fib.wasm b/fib_test/builtin_fib.wasm deleted file mode 100644 index b212ca0..0000000 Binary files a/fib_test/builtin_fib.wasm and /dev/null differ diff --git a/fib_test/fib_compiled.wasm b/fib_test/fib_compiled.wasm deleted file mode 100644 index de2b356..0000000 Binary files a/fib_test/fib_compiled.wasm and /dev/null differ diff --git a/fib_test/fib_compiled_let.wasm b/fib_test/fib_compiled_let.wasm deleted file mode 100644 index 0adda6c..0000000 Binary files a/fib_test/fib_compiled_let.wasm and /dev/null differ diff --git a/fib_test/fib_compiled_manual.wasm b/fib_test/fib_compiled_manual.wasm deleted file mode 100644 index 136d42b..0000000 Binary files a/fib_test/fib_compiled_manual.wasm and /dev/null differ diff --git a/fib_test/fib_interpreted.wasm b/fib_test/fib_interpreted.wasm deleted file mode 100644 index c9e4708..0000000 Binary files a/fib_test/fib_interpreted.wasm and /dev/null differ diff --git a/fib_test/fib_interpreted_let.wasm b/fib_test/fib_interpreted_let.wasm deleted file mode 100644 index 1c7133f..0000000 Binary files a/fib_test/fib_interpreted_let.wasm and /dev/null differ diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..06eed62 --- /dev/null +++ b/flake.lock @@ -0,0 +1,93 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1649676176, + "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1649676176, + "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "moz_overlay": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1652149774, + "narHash": "sha256-rms5yNnnlmaqzEnI/9Log+5k/yVz4fB1BUVx5HXf8i8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "1dcdd08fcd39e4e053f58f9959be801399c5211e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1652133925, + "narHash": "sha256-kfATGChLe9/fQVZkXN9G71JAVMlhePv1qDbaRKklkQs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "51d859cdab1ef58755bd342d45352fc607f5e59b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1652020977, + "narHash": "sha256-V6VYIwTeI5BCfYK9f5EsMbjsjsis1rUDHMsaDbTvt+A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715dc137b08213aabbbe0965b78ab938e5d8d3b7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.11", + "type": "indirect" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "moz_overlay": "moz_overlay", + "nixpkgs": "nixpkgs_2" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..70412fd --- /dev/null +++ b/flake.nix @@ -0,0 +1,52 @@ +{ + description = "Env for Kraken and the extacted Koka bencmarks"; + inputs = { + + #flake.lock pins a particular version of 21.11 that has non-broken Swift + nixpkgs.url = "nixpkgs/nixos-21.11"; + #nixpkgs.url = "github:NixOS/nixpkgs"; + + # Pure-er, so we don't have to mess with the --impure flag + moz_overlay.url = "github:oxalica/rust-overlay"; + #moz_overlay.url = "github:mozilla/nixpkgs-mozilla"; + + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = { self, nixpkgs, moz_overlay, flake-utils }: + (flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ moz_overlay.overlay ]; + }; + in { + devShell = pkgs.mkShell { + buildInputs = with pkgs; [ + + chicken + #gambit + gambit-unstable + chez + wabt + wasmtime + wasm3 + wasmer + leiningen + clang + kakoune + + hyperfine + (rust-bin.stable.latest.default.override { + targets = [ "wasm32-wasi" ]; + }) + cmake + stack (haskellPackages.ghcWithPackages (p: [p.parallel])) + koka + ocaml + jdk + swift + ]; + }; + } + )); +} diff --git a/misc_tests/fact_lognoopt.kp b/misc_tests/fact_lognoopt.kp new file mode 100644 index 0000000..9e22338 --- /dev/null +++ b/misc_tests/fact_lognoopt.kp @@ -0,0 +1,33 @@ + +((wrap (vau root_env (quote) +((wrap (vau (let1) +(let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se))) +(let1 current-env (vau de () de) +(let1 cons (lambda (h t) (concat (array h) t)) +(let1 Y (lambda (f3) + ((lambda (x1) (x1 x1)) + (lambda (x2) (f3 (wrap (vau app_env (& y) (lapply (x2 x2) y app_env))))))) +(let1 vY (lambda (f) + ((lambda (x3) (x3 x3)) + (lambda (x4) (f (vau de1 (& y) (vapply (x4 x4) y de1)))))) +(let1 let (vY (lambda (recurse) (vau de2 (vs b) (cond (= (len vs) 0) (eval b de2) + true (vapply let1 (array (idx vs 0) (idx vs 1) (array recurse (slice vs 2 -1) b)) de2))))) + (let ( + rec-lambda (vau se (n p b) (eval (array Y (array lambda (array n) (array lambda p b))) se)) + + fact (rec-lambda fact (n) (cond (= 0 n) 1 + (= 1 n) 1 + true (band #xFFFFFF (* n (fact (- n 1)))))) + + monad (array 'write 1 "hao" (vau (written code) + (array 'exit (log (fact (log 10000)))) + + )) + + ) monad) +; end of all lets +)))))) +; impl of let1 +)) (vau de (s v b) (eval (array (array wrap (array vau (array s) b)) v) de))) +; impl of quote +)) (vau (x5) x5)) diff --git a/partial_eval.scm b/partial_eval.scm index d5391fb..8e1f9b8 100644 --- a/partial_eval.scm +++ b/partial_eval.scm @@ -734,7 +734,7 @@ ((prim_comb? x) (array pectx nil x)) ((marked_symbol? x) (mif (.marked_symbol_is_val x) x (env-lookup-helper (.env_marked env) (.marked_symbol_value x) 0 - (lambda () (array pectx (str "could't find " (str_strip x) " in " (str_strip env)) nil)) + (lambda () (array pectx (str "could't find " (true_str_strip x) " in " (str_strip env)) nil)) (lambda (x) (array pectx nil x))))) ; Does this ever happen? non-fully-value arrays? ((marked_array? x) (cond ((.marked_array_is_val x) (dlet ( ((pectx err inner_arr) (foldl (dlambda ((c er ds) p) (dlet (((c e d) (partial_eval_helper p false env env_stack c (+ 1 indent) false))) (array c (mif er er e) (concat ds (array d))))) diff --git a/rb_tree_test/matching.kp b/rb_tree_test/matching.kp index 0f456a7..cb4f70b 100644 --- a/rb_tree_test/matching.kp +++ b/rb_tree_test/matching.kp @@ -279,76 +279,15 @@ - match_result1 (match 1 - 2 true - a (+ a 1) - ) + make-test-tree (rec-lambda make-test-tree (n t) (if (<= n 0) t + (make-test-tree (- n 1) (map-insert t n (= 0 (% n 10)))))) + reduce-test-tree (lambda (tree) (generic-foldl (lambda (a x) (if (idx x 1) (+ a 1) a)) 0 tree)) - - monad (array 'write 1 (str "enter number to fact: " match_result1 " ") (vau (written code) - (array 'read 0 60 (vau (data code) - - (let ( - first set-empty - _ (log first " set-contains? " 1 " ? " (set-contains? first 1) " size " (size first)) - second (set-insert first 1) - _ (log second " set-contains? " 1 " ? " (set-contains? second 1) " size " (size second)) - third (set-insert second 2) - _ (log third " set-contains? " 1 " ? " (set-contains? third 1) " size " (size third)) - _ (log third " set-contains? " 2 " ? " (set-contains? third 2) " size " (size third)) - fourth (set-insert third 3) - _ (log fourth " set-contains? " 1 " ? " (set-contains? fourth 1) " size " (size fourth)) - _ (log fourth " set-contains? " 2 " ? " (set-contains? fourth 2) " size " (size fourth)) - _ (log fourth " set-contains? " 3 " ? " (set-contains? fourth 3) " size " (size fourth)) - _ (log fourth " set-contains? " 4 " ? " (set-contains? fourth 4) " size " (size fourth)) - _ (log fourth " foldl with + " (set-foldl + 0 fourth)) - fifth (set-remove fourth 1) - _ (log fifth " set-contains? " 1 " ? " (set-contains? fifth 1) " size " (size fifth)) - _ (log fifth " set-contains? " 2 " ? " (set-contains? fifth 2) " size " (size fifth)) - _ (log fifth " set-contains? " 3 " ? " (set-contains? fifth 3) " size " (size fifth)) - _ (log fifth " set-contains? " 4 " ? " (set-contains? fifth 4) " size " (size fifth)) - sixth (set-remove fifth 3) - _ (log sixth " set-contains? " 1 " ? " (set-contains? sixth 1) " size " (size sixth)) - _ (log sixth " set-contains? " 2 " ? " (set-contains? sixth 2) " size " (size sixth)) - _ (log sixth " set-contains? " 3 " ? " (set-contains? sixth 3) " size " (size sixth)) - _ (log sixth " set-contains? " 4 " ? " (set-contains? sixth 4) " size " (size sixth)) - seventh (set-remove sixth 2) - _ (log seventh " set-contains? " 1 " ? " (set-contains? seventh 1) " size " (size seventh)) - _ (log seventh " set-contains? " 2 " ? " (set-contains? seventh 2) " size " (size seventh)) - _ (log seventh " set-contains? " 3 " ? " (set-contains? seventh 3) " size " (size seventh)) - _ (log seventh " set-contains? " 4 " ? " (set-contains? seventh 4) " size " (size seventh)) - - first map-empty - _ (log first " map-contains-key? " 1 " ? " (map-contains-key? first 1) " size " (size first)) - second (map-insert first 1 "hello") - _ (log second " map-contains-key? " 1 " ? " (map-contains-key? second 1) " size " (size second)) - _ (log second " map-get " 1 " ? " (map-get second 1) " size " (size second)) - third (map-insert second 1 "goodbye") - _ (log third " map-contains-key? " 1 " ? " (map-contains-key? third 1) " size " (size third)) - _ (log third " map-get " 1 " ? " (map-get third 1) " size " (size third)) - fourth (map-insert third 2 "hmmm") - _ (log fourth " map-contains-key? " 2 " ? " (map-contains-key? fourth 2) " size " (size fourth)) - _ (log fourth " map-get " 2 " ? " (map-get fourth 2) " size " (size fourth)) - _ (log fourth " map-contains-key? " 1 " ? " (map-contains-key? fourth 1) " size " (size fourth)) - _ (log fourth " map-get " 1 " ? " (map-get fourth 1) " size " (size fourth)) - _ (log fourth " map-contains-key? " 3 " ? " (map-contains-key? fourth 3) " size " (size fourth)) - _ (log fourth " map-get-or-default " 3 " 'hi ? " (map-get-or-default fourth 3 'hi) " size " (size fourth)) - _ (log fourth " map-get-with-default " 3 " (lambda () 'bye) ? " (map-get-with-default fourth 3 (lambda () 'bye)) " size " (size fourth)) - fifth (map-remove fourth 2) - _ (log fifth " map-contains-key? " 2 " ? " (map-contains-key? fifth 2) " size " (size fifth)) - ) (array 'exit (map-get fifth (read-string data)))) - - - ;(array 'exit (match (read-string data) - ; 1 "one" - ; 'jkl "it's jkl" - ; ,match_result1 383838 - ; (1 b) (+ 1337 b) - ; (,match_result1 b) (+ 2337 b) - ; (a b) (+ a b) - ; a (+ a 13) - ; )) - )) + monad (array 'write 1 (str "running tree test") (vau (written code) + ;(array 'exit (log (reduce-test-tree (make-test-tree (log 100) map-empty)))) + (array 'read 0 60 (vau (data code) + (array 'exit (log (reduce-test-tree (make-test-tree (read-string data) map-empty)))) + )) )) diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 76b3530..0000000 --- a/shell.nix +++ /dev/null @@ -1,25 +0,0 @@ - -let - moz_overlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz); - nixpkgs = import { overlays = [ moz_overlay ]; }; -in with nixpkgs; -mkShell { - LANG="en_US.UTF-8"; - nativeBuildInputs = [ - chicken - #gambit - gambit-unstable - chez - wabt - wasmtime - wasm3 - wasmer - kakoune - #(rustChannelOf { rustToolchain = ./rust-toolchain; }).rust - #(rustChannelOf { date = "2022-04-10"; channel = "nightly"; targets = [ "wasm32-wasi" ]; }).rust - (latest.rustChannels.nightly.rust.override { targets = [ "wasm32-wasi" ]; }) - leiningen - clang - hyperfine - ]; -}