Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
(ns typed.core
(:require [clojure.core.typed :as t]))
(t/ann-datatype Foo [fooName :- t/Str])
(deftype Foo [fooName])
(t/ann-datatype Bar [barName :- t/Str])
(deftype Bar [barName])
(t/ann theName [(t/U Foo Bar) -> t/Str])
(defmulti theName class)
(defmethod theName Foo [^Foo f] (.fooName f))
(defmethod theName Bar [^Bar f] (.barName f))
(t/check-ns)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.