[ANN] Typed Clojure 1.1.1 - Symbolic Execution

20 views
Skip to first unread message

Ambrose Bonnaire-Sergeant

unread,
Aug 16, 2023, 6:23:28 PM8/16/23
to clojure-c...@googlegroups.com
Hi,

I'm excited to announce Typed Clojure 1.1.1 which includes support for symbolic execution via a new type called a "symbolic closure".

I have written a guide on how to think about this new type and what it enables. In short, it can dramatically decrease the number of local annotations needed on anonymous functions.

https://github.com/typedclojure/typedclojure/tree/main/example-projects/symbolic-guide#symbolic-execution-in-typed-clojure

For example, instead of:

(map (fn [x :- Int, y :- Int] (+ x y)) [1] [2])

You can now write:

(map #(+ %1 %2) [1] [2])

It's also useful for transducers, though we're lacking much support for comp at the moment. For now instead of:

(into [] (map (fn [x :- Int] (inc x)) [1 2])

You can simply write:

(into [] (map #(inc %)) [1 2])

Functions can now whiz around and be checked after they have been defined:

(let [f #(inc %)] (f 1))

Getting Started: https://github.com/typedclojure/typedclojure#usage-overview

Thanks,
Ambrose
Reply all
Reply to author
Forward
0 new messages