To be honest, I'd kill for a Lisp that had the same type system as OCaml, but I suspect the closes we'll get is basically Rust (whose macro system is quite good).
To be honest, I'd kill for a Lisp that had the same type system as OCaml, but I suspect the closes we'll get is basically Rust (whose macro system is quite good).
There's also the plait language which says its type system is similar to ML: https://docs.racket-lang.org/plait/index.html
And Hackett, inspired by Haskell: https://lexi-lambda.github.io/hackett/
And Common Lisp has coalton: https://coalton-lang.github.io/
Rust is categorically different from all of these other things. Lisps (and OCaml) all have interactivity as a core language feature - Rust is as non-interactive as it gets.
> whose macro system is quite good
Compared to C, perhaps.
type Divisor Number
def divide(Number, Divisor) = Number / Divisor
As compared to: def divide(number: Number, divisor: Number) = number / Divisor
I have implemented a compiler for a language that does this with different (less familiar) syntax. It's a bit more complicated than described above to handle local variables but it works very well for me.This doesn't remove them, it just moves them.
Shen homepage: https://shenlanguage.org/
The language is mostly inspired by the following 3 languages:
Clojure (syntax)
Haskell (functional programming)
Standard ML (polymorphism)