Hi, I’m creating a new announcement thread for the purescript-analyzer’s progress.
I implemented several type checker features in the past few weeks, namely constraint solving, compiler-solved type classes, and instance deriving. The analyzer playground now also supports loading packages from the package set. Check it out here, please try to break the type checker as much as possible!
https://purefunctor.github.io/purescript-alexandrite/
In the next few months I’ll be focusing on implementing type checking parity for core packages, then once some things are ironed out I’ll start introducing type information to the LSP server.
8 Likes
I’ve just released v0.0.11 of the purescript-analyzer project (soon to be renamed purescript-alexandrite). This is a milestone version for the project: it contains the first generally available version of the type checker.
There’s still edge cases here and there, but I’m pretty confident that it can check most simple PureScript programs, so do give it a shot!
5 Likes
I’ve just released v0.0.17 of purescript-alexandrite; you can see the release notes here:
You can also now install pre-built binaries for the project, see:
3 Likes
The DX is really awesome 
Just one note: sometimes, there seem to be duplicate errors. Example below: the 1st and the 2nd are strictly identical.
Yeah, this is a happy side-effect of the language server being designed around error resilience. Instead of throwing immediately it’ll accumulate errors pretty naively. I’m exploring some ideas for improving it though.
1 Like
I made a short video on my usual development workflow for those interested:
1 Like
Very interesting!
I’m super curious about the ‘soon to be compiler’ part:
With a brand new type checker, do you think features that were “harder” to add in the official compiler (like GADTs) might become easily supportable through Alexandrite in the future?
Really looking forward to seeing how this evolves. Subscribed!
1 Like
It’s still a compiler frontend at the end of the day, it doesn’t produce executable code yet but I have some experiments on compiling down to highly unoptimised CoreFn that purescript-backend-optimizer can handle pretty well.
It’s 50/50. Considering my personal bias as the author I think in general it’s easier to experiment with adding features, but at the same time Alexandrite has its own set of complexities around syntax-driven type checking.
1 Like