Email or username:

Password:

Forgot your password?
Top-level
Ramin Honary

@abcdw Yeah, I am a huge fan of #Scheme and #Guile, but I unfortunately have almost no opportunity to use it. I use #Haskell for most everything. If Scheme had a Haskell-like (System-F) type system, I could probably convert most of my Haskell code over to Scheme and use Guile exclusively.

What I love about Scheme is that it is so minimal. It seems to has found that sweet-spot between the very mathematical and abstract Untyped Lambda Calculus and an actual practical programming language that you can use to do real #software #engineering.

One thing it lacks is a consistent implementation, and this is where #CommonLisp tends to win out. But Guile actually implements most all of the features specified in the Common Lisp standard, and so do a few other mainstream schemes like Chez. So nowadays, I personally believe there is more reason to use Scheme than Common Lisp if you are starting a new project from scratch.

The features of System-F do exist for Scheme here in there in various forms, in particular a Hindley-Milner type checker with Algebraic Data Types like Haskell or #Ocaml. Alexis King has developed "Hackett" which is a Haskell-like Lisp implemented as a #Racket EDSL. Common Lisp has Coalton, which is very a recent development and very Haskell-like. There is also PreScheme, but it is somewhat restrictive (e.g. no clojures).

Scheme has #Prolog-like system you can import called "MiniKanren", which is nearly identical to the clojure/core.logic module, but this is fully-dependently typed Calculus of Constructs, not System-F, so much harder to use in practice (in my experience). I hope Alexis King ports her Hackett to Scheme. I would do it on my own even, if I had more free time.

- coalton-lang.github.io/2021101
- lexi-lambda.github.io/hackett/
- minikanren.org/
- clojure.github.io/core.logic/
- groups.scheme.org/prescheme/1.

2 comments
Andrew Tropin

@ramin_hal9001 I saw a few attempts of typetizing lisps: Typed Racket, Typed Clojure, clojure.spec/malli, Carp and probably much more, but still not faced something that really shines. I learn haskell and related literature right now, so I hope to get a better feeling of good type system to be able to assess such tool or maybe even implement my own.

Panicz Maciej Godek

@abcdw @ramin_hal9001
It's a bit surprising, but as I started using Kawa - which has a Java-like type system - it turned out extremely pleasant experience.

I wrote about it a bit more here:

functional.cafe/@PaniczGodek/1

Go Up