I wrote a brief article on my experience reverse engineering #clojure defprotocol for the purposes of enabling instrumentation of protocols methods. This led to s/defprotocol in Plumatic Schema. https://t.co/Z6nIMXEH99
@samth Yes, in this case it was introduced because everything in clojure.spec is namespaced, and people make random namespaces that don't exist, but still want to abbrev them.
@dustingetz Yes and no. In practice we'll need some more metadata ops that I haven't implemented yet:
1. ^::t/ignore foo <=> (t/tc-ignore foo)
2. Forcing a type: ^{::t/force SomeType} foo
3. ^{::t/- MyType} foo <=> (t/ann-form foo)
I'll update the zero-deps example when those are done.
@samth `:as-alias` means "create an alias but don't load this namespace". So in prod, nothing in Typed Clojure is loaded. When you go to check it in dev, the alias is enough to resolve the type syntax.