If a newbie is trying to debug
{:deps
{ring/ring-devel {:mvn/version "1.9.6"}}
{ring/ring-core {:mvn/version "1.9.6"}}}
=> Error building classpath. Error reading edn. Map literal must contain an even number of formsThey have to notice that while they got 80% of their maps right, the file itself if a map with 3 forms. This is compounded by the fact that there are no examples of a multi-dependency project in the getting started page! If you know Clojure, this is an easy puzzle. For rookies, they didn't use (map) so the error message will probably trick some percent of them.
I don't think the deps documentation has been validated to provide what people actually want to know. Technically it is probably thorough, but "Superb" is a high bar it does not reach.
Probably the proper approach is learning deps by copying other people. Trying to learn it from the docs didn't work for me (it did for the rest of Clojure, so that was an unpleasant change).
Ed: I'm guessing a key => list of deps, maybe?
To expand, this is the equivalent of something like {"a": 1, "b":}. The type checker in something like Typescript wouldn't ever come into play, because it's not legal syntax to begin with.
{:deps
{ring/ring-devel {:mvn/version "1.9.6"}
ring/ring-core {:mvn/version "1.9.6"}}}
There was one too many map.Sorry, I had a bad time learning deps and the frustration still haunts me.
That's because they basically don't support monorepo multi-module projects. It's incredibly tedious and makes me long for something like Maven or Gradle (tools that otherwise are often too complicated).
(I regularly contribute to a monorepo like this, though admittedly the top-level components are relatively disjoint.)
e.g. deps.edn -
there is a "Guide" https://clojure.org/guides/deps_and_cli
there is a "Getting Started" https://clojure.org/guides/getting_started (it's branded as an overall Clojure getting started but the core of deps is just the clj/clojure command line tool you would use to install clojure)
there is a deep "Reference" with a "Rationale" https://clojure.org/reference/deps_and_cli
spec
Spec Guide - https://clojure.org/guides/spec
Spec Rationale https://clojure.org/about/spec
Spec API reference https://clojure.github.io/spec.alpha/
Spec resources (brief) https://clojure.org/community/resources#spec
(Rich Hickey also gave a couple of spec talks that are on YouTube)
Also, for my money, deps.edn is way more composable than lein, does not feel weird to me at all. Ditto for spec vs prismatic schema which preceded it. I think the latter case is one where people were more miffed that the official solution displaced a community beloved tool, but to me it genuinely seems really well thought through. There are some flaws discussed in the Rich Hickey talk "Maybe Not" which led to an experimental (still beta) spec2 but spec1 I still find miles ahead of what's available for the languages I've worked with.