scala - Why is there no >=> semigroup for A => M[A] in Scalaz? -


this followup previous question

kleisli defines 2 operators <=< (compose) , >=> (andthen). >=> looks natural me , don't understand how <=< can useful.

moreover, looks there no >=> semigroup a => m[a] <=< semigroup exist.

what rationale behind ?

compose (or <=<) little more natural when translating between point-free , non point-free styles. example, if have these functions:

val f: int => int = _ + 1 val g: int => int = _ * 10 

we following equivalences:

scala> (f andthen g)(3) == g(f(3)) res0: boolean = true  scala> (f compose g)(3) == f(g(3)) res1: boolean = true 

in compose case f , g in same order on both sides of equation.

unfortunately scala's type inference makes andthen (or >=>) more convenient, , tends more used compose. case mathematical conventions , quirks of scala's type inference system @ odds. scalaz (not surprisingly, given culture of project) chooses math side.


Comments

Popular posts from this blog

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -

jquery - javascript onscroll fade same class but with different div -