Need help with typed-clojure?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

frenchy64
207 Stars 11 Forks Eclipse Public License 1.0 449 Commits 0 Opened issues

Description

DEPRECATED SEE BELOW Gradual typing for Clojure

Services available

!
?

Need anything else?

Contributors list

No Data

This repository has moved: core.typed

Leiningen dependency (Clojars):

[typed "0.1.6"]

Typed Clojure

Gradual typing in Clojure, as a library.

[Talk] Clojure Conj 2012

Video

Documentation

See wiki.

License

Typed Clojure is released under the same license as Clojure: Eclipse Public License v 1.0.

See

LICENSE
.

Changelog

0.1.6 - Ensure

Result
is not introduced when performing type inference on drest fn apps -
tc-ignore
is more do-like.

Workaround for a quirk in the Clojure compiler where protocols only get generated in a top-level

do
.
  (identity (do (def-protocol foo (bar [this]))
              bar)) ;; 

(patch by Stephen Compall, issue #3) - Fix typo in

into-array
logic (patch by Stephen Compall, issue #4) -
into-array>
generalises Java types, does not need redundant type annotations. See User Documentation in wiki. - Improve type of
clojure.core/class
. (class ) is always a Class (class nil) is always a nil - Move documentation to wiki.

0.1.5 - Better errors for Java methods and polymorphic function applications, borrow error messages from Typed Racket - Change

ann-datatype
,
ann-protocol
,
ann-pprotocol
syntax to be flatter (ann-protocol pname method-name method-type ...) (ann-dataype dname [field-name :- field-type ...]) - Add
defprotocol>

0.1.4 - Support Clojure 1.4.0+ - Better errors, print macro-expanded form from AST

0.1.3 - Refactor typed.core into individual files - Add

method-type
-
(method-type 'java.io.File/getName)
prints the current Typed Clojure type for the getName method of File - Add types for some clojure.core coersion functions - Preliminary support for ClojureScript

0.1.2 - Fix objects and filters being lost during polymorphic and dotted function applications - Add tests for (if (seq a) (first a) 0) filter example. - Can annotate datatypes outside current namespace - Improve type of

seq
,
next
,
conj
- tc-pr-env -> print-env - tc-pr-filters -> print-filterset - Alter APersistentMap - Check that local binding occurrences match with expected types - Heterogeneous maps are APersistentMap's instead of IPersistentMap's - Heterogeneous vectors are APersistentVector's instead of IPersistentVector's

0.1.1

  • Ensure
    ann-form
    finally checks its expression is of the expected type
  • Improve simplifying of intersections involving Java classes

Quickstart

(typed.core/ann v t)
gives var
v
the static type
t
.

(typed.core/ann-form f t)
ensures form
f
is of the static type
t
.

(typed.core/check-ns)
type checks the current namespace.

(typed.core/cf t)
type checks the form
t
.

Examples

(These don't completely type check yet)

Future work

  • Equality filters for occurrence typing
  • Type check multimethods
  • Rest type checking in fn definition
  • Type check defprotocol definitions
  • Unify AST with ClojureScript
  • Namespace dependency management

Contributors

Stephen Compall (S11001001)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.