All notable changes to the infix library will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
(return nil) and (return false) no longer re-throw — infix-defn now distinguishes "no return value" from "returned a falsy value" by checking key presence in ex-data. (#1)count([1 2 3]) and similar now preserve the vector container instead of coercing it to a seq, so (map inc, [1 2 3]) and friends work as expected. (#3)(let [n count(xs)] …) and operator-headed nesting like (let [t (/ count(xs) 2)] …) are now transformed correctly inside infix-defn. The transform-function-calls pass is now context-aware (:expression vs :call) and protects let-style binding vectors. (#3)(infix x => (max x 5)) and curried (infix x => (infix y => x + y)) no longer go through the infix parser, which had been mangling pre-formed Clojure expressions. (#5)(infix ((((3 + 4))))) etc. now evaluate correctly. The grouping detector deliberately leaves the thunk-call idiom ((fn [] 5)) intact — only literals, vectors, infix expressions, and chains that bottom out in those are unwrapped. (#8)permissions: contents: read and SHA-pinned actions (including the third-party DeLaGuardo/setup-clojure) so a moving tag cannot inject new code into the build. (#9)Core Infix Operations: Complete arithmetic, comparison, and boolean operators
+ - * / with proper precedence= not= < <= > >=and or not with short-circuiting-> ->> some-> some->> as infix operatorsArrow Lambda Syntax: Clean anonymous function syntax
x => x * 2(x y) => x + yx => x * x + 1Function Definitions: infix-defn macro with full feature support
(infix-defn name "doc" [params] body)return statementFunction Call Syntax: Familiar fn(args) transformation
max(3, 5) → (max 3 5).method(obj, arg) → (.method obj arg)obj -> .method() -> .other()Complete OOP Interop: Full Java object support
obj.method(args) → (.method obj args)obj -> .method1() -> .method2()ClassName(args) → (new ClassName args)ClassName.new(args)StringBuilder("hi") -> .append("!")com.flexiana/infix "1.0-rc1"This release candidate includes all planned features for version 1.0. The library is feature-complete and ready for production use. The API is stable and no breaking changes are expected for the 1.0 release.
in, not-inCan you improve this documentation? These fine people already did:
Jiri Knesl & CEO System UserEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |