I'm a new player to Arrow, however I've done some ...
# arrow
k
I'm a new player to Arrow, however I've done some FP work before in JS using Crocks. My current project is porting a JS library using Crocks to Kotlin so Arrow really grabbed my interest. However I couldn't find an easy "beginners guide" to Arrow. The documentation does talk a lot about Monads which is great, but I'm after other documentation like how to compose functions together, and write point free functions. After doing some digging I managed to use
f compose g
in my code. However why is
compose
an infix function? That's the sort of documentation I'm after, and I'm hoping someone can point me in the right direction. 😄
👍 1
s
Hey Kierans, The documentation is sadly lagging a bit behind given that all our current efforts are going towards making Arrow MPP, and some other outstanding tasks (including docs) to get it into a nice shape for 1.0.0.
However why is 
compose
 an infix function?
Such things will not get documented in the library, given that their language features and unrelated to Arrow. The
infix
modifier allows you to call it
f compose g
or
f.compose(g)
. Here is a part of the doc that I find really interesting in regards to how to compose functions and signatures. https://arrow-kt.io/docs/effects/io/
k
Thanks @simon.vergauwen for the reply. I appreciate it. I'm also really keen to see Arrow MPP, so glad that's a priority.
Such things will not get documented in the library, given that their language features and unrelated to Arrow.
Personally, I think a page on "coming to Arrow from other places" might be a worthwhile investment. What I found really confusing having done Clojure, Crocks (JS), etc is
f compose g
or
f.compose(g)
(ie: a method like call) when typically the function comes first ie:
compose(g, f)
. I found the same issue when trying to curry my functions eg:
f.curried()(a)(b)(c).
s
Such a page might be worthwhile to have, I don't think any of the current common contributors could write such a page since afaik none of us commonly works in Clojure or Crocks (JS) 😅 Seems the different in calling APIs is a change from prefix notation, to dot notation.
compose(g, f)
would be considered very uncommon in Kotlin. So maybe a small document explaining what the typical Arrow signatures look like, would be sufficient?
k
That's a good starting point 👍