-
secure by default
-
immutable data (only)
- number
- text
- list
- tuple
- dictionary (or some other struct?)
- NO null (use unit instead)
-
first class functions
-
lambdas
-
sound type system
-
algebraic effects
-
pattern matching
-
module system
- explicit import/export
- support circular imports
-
NO classes
-
NO prototypes
-
friendly syntax
- familiar to JS or python developers
- identifiers with spaces (!)
- partial application
- named parameters
-
memory management: automatic reference counting?
-
single (decimal) number type
-
play nice with bundlers
-
legacy JS interop
- channels?
- unsafe blocks?
-
testing library?
-
package manager ecosystem
-
support spaces in variable names
-
learn from erlang execution model?
- syntax features
- infix currying (https://koka-lang.github.io/koka/doc/book.html#sec-dot)
- formatted strings
- no finally keyword
- React bindings
- compile to JS
- compile to WASM
- TypeScript interop
- generate .d.ts interfaces
- infer types from TypeScript sources
- traits or typeclasses (?)
- pretty-printer
Hey Andrew!
I'm not sure if the best way to write you, so I'll comment on this most recent gist of yours and try something else if this doesn't work.
Steven Wittens has made me a maintainer of Mathbox, and I've recently completed a push to get Mathbox2 upgraded to modern three.js and a proper modular architecture.
I'm preparing to publish threestrap, mathbox and shadergraph to npm, and it looks like you are the current owner of the mathbox package on npm: https://gitgud.io/unconed/mathbox/-/issues/10
I'm happy to go through the process you linked on the ticket: https://docs.npmjs.com/policies/disputes
but I figured writing you first would be the easiest.
Here's the current state, now all in ES6 javascript vs coffeescript, ready to be transferred to the gitgud repo: https://github.com/mentat-collective/mathbox2
Cheers!