Pursuit
I’ve been using this for a little over a month now and have really enjoyed it.
2 Likes
-
Could you describe
f <. g <~. h
more. What is done first, left or right. What happens when the first operator is applied -
Why
<.
is better
1 Like
-
<.
and<~.
are both right-associative with the same precedence, so this is how you would transform it step by step
f <. g <~. h
(f <. g) <~. h
(\z -> f (g z)) <~. h
\x y -> (\z -> f (g z)) x (h y)
\x y -> f (g x) (h y)
But an easier way to think about it is to use the symbols. f <. g
means make a new function consisting of g
being applied to the first argument of f
. f <~. g
mean make a new (at least) two argument function where the first argument is passed to f
unaltered, and the second argument is passed to f
after first having g
applied to it. So when you combine them, f <. g <~. h
becomes "take f
, apply g
to it’s first argument and apply h
to its second argument.
- personally I find
<<<
unnecessarily verbose. - I don’t like how
<<<
and>>>
are both right-associative - it’s the natural operator for normal composition when using the generalization I’m using (what comes next?
<....
,<...
,<..
, ?) - it’s kinda like haskell’s
.
but can be used in both directions
1 Like