| Newsgroups |
gmane.lisp.scheme.bigloo |
| Organization |
Inria |
| Message-ID |
<[email protected]> |
Hi Joseph,
> I have recently come a cross a number of references to Clojure's
> threading macros, -> and ->>. These macros have the form: ((or -> ->>) x
> form ...). The value of x is spliced in as the first or last argument,
> respectively, of form with its result being likewise spliced into the
> next form and so on. From the examples I have seen, these macros can be
> useful, but instead of replicating these macros exactly in bigloo, I
> decided to create a generalized version called T> where _ is used to
> indicate where values are to be spliced in. T> has the form: (T> x form1
> ...) In form1 and subsequent forms the _ character is used to indicate
> where x should be spliced.
>
> Examples:
>
> (T> 4 (+ _ 3) (* 3 _)) => 21
>
> (T> '( 1 2 3 4)
> (map odd? _)
> (map (lambda (x) (* x 2)) _)) => (2 6)
>
> The definition of T> is attached. I would be interested in any comments
> or suggestions you may have.
I don't understand your example. I would have replaced MAP with FILTER, as
in:
(T> '( 1 2 3 4) (filter odd? _) (map (lambda (x) (* x 2)) _))
What are the concrete use cases they have in Clojure for this macro?
It vaguely reminds me of the monadic threads as one may find in Ocaml.
--
Manuel