An experimental programming language, built as a foundation for other programming languages. We borrow ideas from the blockchain world and semantics from
We choose Core Frank because:
- It's a small language with a formal semantics
- It has a notion of ambient ability which allows us to reason about the world our programs operate in
- It doesn't even have a built-in syntax
Because the core is very small, it can be easily implemented for any platform, exposing libraries and features of that platform while interoperating with the Planetary ecosystem.
It's not important to start with the perfect base. It is important for the base to be formally specified, extremely simple, and extensible.
We started with a small core but want to be able to use richer language features
Haskell's language pragma problem Nix Reliable builds
We envision an ecosystem of interoperable languages. A community of language experimentation. Haskell language pragmas or babel, but lighter-weight.
We don't have an official syntax, however for testing we use a syntax similar to the one from the paper but more limited in some ways.
We add fixed points so we can typecheck inductive data.
We add a foreign value constructor representing terms that are not planetary data types.
Possible addition: allow letrec to define values in addition to lambdas