how exactly does the function composition syntax a:b work? Does it only work on functions or on macros too? Can I do (a:[+ _ 1] 3) or (a:(fn () 3))? Why is : infix? The same considerations as for + seem to hold for : ("Putting the + before the numbers looks odd when you're used to
writing "1 + 2," but it has the advantage that + can now take any
number of arguments, not just two:"). That would also make (:) return the identity function. Simply define (= : (fn x (fold compose id x)) (= (: . x) (fold compose id x)); wow, same length ;) |