sci

zimablue 2023-05-10T18:54:18.684479Z

is sci technically what they call a metacircular interpreter?

borkdude 2023-05-10T18:55:27.048799Z

yes

zimablue 2023-05-10T18:57:37.223149Z

because it's written in clojure, interprets clojure, and can do it "easier" by (calling eval?) but it can't actually be calling eval since it forms the basis for nbb which afaiu can live inside cljs

borkdude 2023-05-10T18:58:30.180379Z

SCI does not use eval because it's not available in GraalVM native-images (babashka) and indeed CLJS (unless you use self-hosted CLJS)

zimablue 2023-05-10T18:59:43.349529Z

as far as I'm understanding, the difference between an self-hosted interpreter and a "metacircular" interpreter is to do with having homoiconic/eval "shortcuts" is the definition therefore somewhat blurry/subjective?

borkdude 2023-05-10T19:00:15.668789Z

self-hosted CLJS is a self-hosted compiler, which means, the compiler can compile itself

borkdude 2023-05-10T19:00:32.751799Z

meta-circular just means "implements the language it is implemented in"

borkdude 2023-05-10T19:01:32.562529Z

meta-circular interpreters implement language features by using the language features of the host environment

borkdude 2023-05-10T19:02:17.331329Z

e.g. loop in the implemented language is implemented using loop of the implementation language

zimablue 2023-05-10T19:04:43.516509Z

I see, so it's not strictly that "eval" is delegated but that "some stuff eg. loop" is delegated

zimablue 2023-05-10T19:04:45.839209Z

thank you

👍 1