Some links from my talk "Back to Front and Beyond"
Typing a LISP (About Toccata's Gradual Typing system)
| (def web-server | |
| (pallet/group-spec "web-server" | |
| :phases {:bootstrap (phase/phase-fn (auto-user/automated-admin-user)) | |
| :settings (phase/phase-fn (tomcat/settings {})) | |
| :configure (phase/phase-fn (tomcat/install))} | |
| :node-spec (pallet/node-spec :image {:smallest true | |
| :os-family :ubuntu | |
| :os-version-matches "10.10"}))) |
| toccata | |
| (def true) | |
| (def false) | |
| (def abort) | |
| (def get-type) | |
| (def type=) | |
| (def subs) | |
| (def number-str) |
| toccata | |
| (def true) | |
| (def false) | |
| (def abort) | |
| (def get-type) | |
| (def type=) | |
| (def subs) | |
| (def number-str) |
| ### Keybase proof | |
| I hereby claim: | |
| * I am jduey on github. | |
| * I am jimduey (https://keybase.io/jimduey) on keybase. | |
| * I have a public key whose fingerprint is DB84 63D3 2A6F 8008 C803 D7CC 47F8 89DB 3FDA 5ED9 | |
| To claim this, I am signing this object: |
| #! /home/jim/toccata --script | |
| (deftype GraphState [proj-root module-root node-count curr-node file-nodes]) | |
| (deftype ImportsGraph [graph root]) | |
| (defprotocol DepsGraph | |
| (imported [_] | |
| ;; by default, does nothing | |
| (state-maybe/state-maybe ""))) |
| Value *g_loop_3949; | |
| Value *g_loop_3950(List *closures, Value *tmp_0, Value *n_1) { | |
| while (1) { | |
| incRef(tmp_0, 1); | |
| incRef(n_1, 1); | |
| Value *andRslt2; | |
| // static-fixed | |
| // #line 3 "recur-test.toc" | |
| Value *rslt3 = g__LT__806(empty_list, n_1, numPtr0); |
Some links from my talk "Back to Front and Beyond"
Typing a LISP (About Toccata's Gradual Typing system)
| //#include <dlfcn.h> | |
| #include <inttypes.h> | |
| #include <math.h> | |
| #include <pthread.h> | |
| #include <stdatomic.h> | |
| #include <stdint.h> | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> |
I want a good FP language that runs on an HVM. So I'm taking the HVM3 implementation and modifying to have the features I want. Check out the HVM3 Repo for the details of how it works first.
Terms are always 64-bits wide with a Tag in the lower 4 bits, giving 16 different possible tags.
There are two tags for number terms, I60 and F60 for 60-bit integer and floats.