-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Suggestion: Add more to the FAQ #3
Comments
Thanks. Yes, it would be added as part of documentation soon. |
Hey, any update on this? Or can you say here what the difference is with Gradualizer :) |
After reading the docs and running some quick experiments, here are my preliminary conclusions about this. I think the main difference is that eqWAlizer has two modes, strict and dynamic. Dynamic mode corresponds, in essence, to Gradualizer. Strict mode allows for stricter type-checking, by not only considering You can find more info about modes here. EqWAlizer and Gradualizer also make different assumption about types. For example, eqWAlizer does not differentiate between numeric types (it consider them all equal to On the topic of maps, eqWAlizer differentiates between dictionaries and shapes: shapes are special map types where the keys are all atoms that are known statically. This allows eqWAlizer to perform more precise type checking on maps in some instances. More info about types and subtyping for maps. Finally, eqWAlizer features stronger occurrence typing (type refinement) than Gradualizer. In particular, eqWAlizer is able to refine the type of expressions using information in arbitrary deep patterns and guards. See these snapshot tests as an example. Gradualizer only allows refinements based on failing clauses in very specific cases, as explained here. Hope this clarifies things a bit, I'll add this info in the documentation after more experimenting. |
Aside from dialyzer it would be useful to have comparisons to other Erlang type checking tools, particularly Gradualizer. I'm sure there are others that'd be good to provide, gradualizer is just the one I was personally curious in a comparison with :).
The text was updated successfully, but these errors were encountered: