This is a continuation of #3 after the original issue deviated too much.
Relevant discussion from the original thread includes the following:
I'm refraining from adding threading macros until the inconsistencies are clearly highlighted - in my mind, this should involve the construction of a test suite which the considered (let's restrict to arrows and arrow-macros) threading macros libraries should all pass. Feel free to suggest if there's a better way to do it.
As an example, here's an inconsistency that was picked up from arrow-macros-test, as on 10th October 2020:
(->> 1 (+ 2 3) #'1+ 1+ (lambda (x) (+ x 1)) (1+)) ;=> returns 10 with arrow-macros
;; The same expands to the following and fails to run with arrows:
(1+ (lambda (x) (+ x 1) (1+ (function 1+ (+ 2 3 1)))))
A manual evaluation expects the following sequence of operations:
(+ 2 3 1)
(function 1+ (+ 2 3 1))
(1+ (function 1+ (+ 2 3 1)))
(lambda (x)
(+ x 1)
(1+ (function 1+ (+ 2 3 1))))
(1+ (lambda (x)
(+ x 1)
(1+ (function 1+ (+ 2 3 1)))))
And this is consistent with arrows (and perhaps clojure?). On the other hand, arrow-macros seems to treat functions and lambdas specially.
Is that the only inconsistency? I do not know. I think a test-suite would answer this question best. Until then - or until a better way - I'd rather be willing to wait for a defacto standard to emerge out in a decade or half, and invest my time on other tasks.
This is a continuation of #3 after the original issue deviated too much.
Relevant discussion from the original thread includes the following:
I'm refraining from adding threading macros until the inconsistencies are clearly highlighted - in my mind, this should involve the construction of a test suite which the considered (let's restrict to
arrowsandarrow-macros) threading macros libraries should all pass. Feel free to suggest if there's a better way to do it.As an example, here's an inconsistency that was picked up from
arrow-macros-test, as on 10th October 2020:A manual evaluation expects the following sequence of operations:
And this is consistent with
arrows(and perhaps clojure?). On the other hand,arrow-macrosseems to treat functions and lambdas specially.Is that the only inconsistency? I do not know. I think a test-suite would answer this question best. Until then - or until a better way - I'd rather be willing to wait for a defacto standard to emerge out in a decade or half, and invest my time on other tasks.