How to describe a function in an interface, in whose signature the return type is the interface itself. I suppose that there is a way, to solve it, as it is in other languages.
(definterface Expression
(^Number evaluate [data])
(^Expression diff [diffVar]))
Syntax error (ClassNotFoundException) compiling deftype* at (expressionJava.clj:8:1).
java.lang.Expression
Full report at:
/var/folders/38/5xvf_2f13fbd4lfxg89f42x00000gn/T/clojure-7914023953805611339.edn
I'd tried to "declare Expreesion", but ain't help.
(definterface Expression
(evaluate ^Number [data])
(diff ^Expression [diffVar]))
In Clojure, return type hints are metadata on the argument list, not on the function name.