3 ms·
If anyone is interested in the theoretical background to the thrush combinator, a.k.a. "|>", here is one using Ruby as the implementation language: https://lea
by AdieuToLogic 2y ago
If anyone is interested in the theoretical background to the thrush combinator, a.k.a. "|>", here is one using Ruby as the implementation language:
https://leanpub.com/combinators/read#leanpub-auto-the-thrush https://leanpub.com/combinators/read#leanpub-auto-the-thrush
Being a concept which transcends programming languages, a search for "thrush combinator" will yield examples in several languages.
- wslh 2y agoI find this [1] from this [2]. Seems like a good explanation. It doesn't exist on Wikipedia though. [1] https://github.com/raganwald-deprecated/homoiconic/blob/master/2008-10-30/thrush.markdown https://github.com/raganwald-deprecated/homoiconic/blob/mast... [2] https://stackoverflow.com/a/285973/88231 https://stackoverflow.com/a/285973/88231
- AdieuToLogic 2y agoA key thing to keep in mind is that the thrush combinator is a fancy name for a simple construct. The semantics it provides is a declarative form of traditional function composition. For example, given the expression: f (g (h (x))) The same can be expressed in languages which support the "|>" infix operator as: h (x) |> g |> f There are other, equivalent, constructs such as the Cats Arrow[0] type class available in Scala, the same Arrow[1] concept available in Haskell, and the `andThen` method commonly available in many modern programming languages. 0 - https://typelevel.org/cats/typeclasses/arrow.html https://typelevel.org/cats/typeclasses/arrow.html 1 - https://wiki.haskell.org/Arrow_tutorial https://wiki.haskell.org/Arrow_tutorial