4 ms·
I thought it's a simple mnemonic: -> means inserting the form just after the beginning of the next one, while ->> inserts at the end of it. You most certainly
by klibertp 9y ago
I thought it's a simple mnemonic: -> means inserting the form just after the beginning of the next one, while ->> inserts at the end of it.
You most certainly can have explicit variable to thread through expressions, like this:
(it-> (form1 it) (form2 3 it 4) ...)
where it means "previous expression". I think there's a Clojure library which already implements this. You can use that if you want.
- serpix 9y agoin Clojure this is achieved with `as->`
- baldfat 9y agoIn Racket we actually have a threading macro with ~> This: (- (bytes-ref (string->bytes/utf-8 (symbol->string 'abc)) 1) 2) Becomes this: (~> 'abc symbol->string string->bytes/utf-8 (bytes-ref 1) (- 2)) https://docs.racket-lang.org/threading/index.html https://docs.racket-lang.org/threading/index.html
- peatmoss 9y agoI believe the use of "~>" rather than "->" in Racket was set in #lang rackjure which adds in some of the Clojure syntax to Racket. Also amusing is their explanation: > For example the threading macros are ~> and ~>> (using ~ instead of -) because Racket already uses -> for contracts. Plus as Danny Yoo pointed out to me, ~ is more "thready". http://docs.racket-lang.org/rackjure/index.html#%28part._.Background_philosophy%29 http://docs.racket-lang.org/rackjure/index.html#%28part._.Ba... More thready indeed :-p