marick/structural-typing

Define types by giving descriptions (perhaps incomplete) of how they're built. "...by how they're built" means applying arbitrary predicates (especially ones about existence) to parts of structures. The top-level namespaces contain what you need to use the library, including simpler customizations. The .assist namespaces are useful for more in-depth customizations.

Leiningen/Boot

[marick/structural-typing "1.0.1"]

Clojure CLI/deps.edn

marick/structural-typing {:mvn/version "1.0.1"}

Gradle

implementation("marick:structural-typing:1.0.1")

Maven

<dependency>
  <groupId>marick</groupId>
  <artifactId>structural-typing</artifactId>
  <version>1.0.1</version>
</dependency>