malli is great.
You can:
- Annotate your functions with type hints, use it compile time, runtime, in the linter.
- Validate data, parse or generate it.
- Serialize schemas to edn files, database or send it via network.
- Visualize it with graphviz or plantuml.
- Add type schemas afterwards or when you need it.
And everything is blazing fast. This is clojure.spec done right IMO.
@abcdw Looks interesting.
We have been using Schema and do get similar benefits (already several years). #cljKondo seems to support https://plumatic.github.io/schema/schema.core.html#var-defn from what I gather, as well as basic type hints of #Clojure (I've probably bumped into them in a warning already).
We've mostly used Schema for the API and DB layers so far, but gradual typing for core functions could be nice at this stage of the project.