addamsson
07/14/2019, 4:01 PMFunctor
which are very well documented
but there are things like Profunctor
which have literally no docs. The functions are also a bit problematic because their kdocs are mostly hard to understand or non-existent.
Do you plan on improving this? It would be useful for contributors who didn't come from a Scala background.addamsson
07/14/2019, 4:04 PMApplicative
can be used for and what unit
means in it without looking at the code.addamsson
07/14/2019, 4:04 PMsimon.vergauwen
07/14/2019, 4:06 PMaddamsson
07/14/2019, 4:07 PMsimon.vergauwen
07/14/2019, 4:07 PMsimon.vergauwen
07/14/2019, 4:07 PMaddamsson
07/14/2019, 4:08 PMaddamsson
07/14/2019, 4:09 PMsimon.vergauwen
07/14/2019, 4:09 PMsimon.vergauwen
07/14/2019, 4:09 PMaddamsson
07/14/2019, 4:11 PMEq
addamsson
07/14/2019, 4:11 PMaddamsson
07/14/2019, 4:11 PMaddamsson
07/14/2019, 4:11 PMaddamsson
07/14/2019, 4:11 PMeqv
and neqv
which is also not too hard to interpretaddamsson
07/14/2019, 4:12 PMaddamsson
07/14/2019, 4:12 PMaddamsson
07/14/2019, 4:12 PMaddamsson
07/14/2019, 4:12 PMfoo.isEquivalentTo(bar)
addamsson
07/14/2019, 4:13 PMequals(other: Any?): Boolean
addamsson
07/14/2019, 4:14 PM==
and !=
addamsson
07/14/2019, 4:14 PMaddamsson
07/14/2019, 4:15 PMaddamsson
07/14/2019, 4:15 PMaddamsson
07/14/2019, 4:16 PMApplicative
addamsson
07/14/2019, 4:16 PMApplicative
is and I didn't understand why it was useful until I saw the Validation
class in VAVRsimon.vergauwen
07/14/2019, 4:16 PMEq
is that you can compose it in nested shapes and it type checks.simon.vergauwen
07/14/2019, 4:18 PMsimon.vergauwen
07/14/2019, 4:19 PMValidated
vs short circuit Either
simon.vergauwen
07/14/2019, 4:19 PMsimon.vergauwen
07/14/2019, 4:20 PMaddamsson
07/14/2019, 4:21 PMaddamsson
07/14/2019, 4:21 PMaddamsson
07/14/2019, 4:21 PMsimon.vergauwen
07/14/2019, 4:21 PMequals
and Eq
is essentially inheritance vs composition. So if you ask why not equals
vs Eq
you could also ask inheritance vs compositionaddamsson
07/14/2019, 4:21 PMsimon.vergauwen
07/14/2019, 4:21 PMsimon.vergauwen
07/14/2019, 4:22 PMaddamsson
07/14/2019, 4:22 PMaddamsson
07/14/2019, 4:22 PMsimon.vergauwen
07/14/2019, 4:22 PMaddamsson
07/14/2019, 4:23 PMaddamsson
07/14/2019, 4:23 PMaddamsson
07/14/2019, 4:24 PMEq
but the whole APIsimon.vergauwen
07/14/2019, 4:24 PMaddamsson
07/14/2019, 4:29 PMsimon.vergauwen
07/14/2019, 4:32 PMsetOf(1, 2, 3).map
to return List.simon.vergauwen
07/14/2019, 4:32 PMsimon.vergauwen
07/14/2019, 4:34 PMsimon.vergauwen
07/14/2019, 4:34 PMsimon.vergauwen
07/14/2019, 4:35 PMrun
addamsson
07/14/2019, 4:38 PMaddamsson
07/14/2019, 4:38 PMaddamsson
07/14/2019, 4:38 PMaddamsson
07/14/2019, 4:38 PMsimon.vergauwen
07/14/2019, 4:42 PMaddamsson
07/14/2019, 4:52 PMaddamsson
07/14/2019, 4:52 PMsimon.vergauwen
07/14/2019, 4:53 PMaddamsson
07/14/2019, 4:53 PMList
is returned but I want my code to be readable so when the next guy comes around to maintain my code and they don't know Arrow they at least have a chance to understand what i've written by just looking at itsimon.vergauwen
07/14/2019, 4:55 PMsimon.vergauwen
07/14/2019, 4:56 PMaddamsson
07/14/2019, 5:05 PMaddamsson
07/14/2019, 5:05 PMaddamsson
07/14/2019, 5:05 PMComposable
instead of Monoid
addamsson
07/14/2019, 5:06 PMMonoid
is and is is unambiguousaddamsson
07/14/2019, 5:06 PMaddamsson
07/14/2019, 5:06 PMFunctor
I've seen things like pure
, of
, just
addamsson
07/14/2019, 5:07 PMaddamsson
07/14/2019, 5:07 PMof
because it is part of Effective Java and most folks understand it by looking at itsimon.vergauwen
07/14/2019, 5:07 PMpure
because originally we thought that since Arrow is build for FPers it should be immediately clear to anyone with FP experience.simon.vergauwen
07/14/2019, 5:08 PMjust
because it's well know from RxJava and Reactor.simon.vergauwen
07/14/2019, 5:09 PMsimon.vergauwen
07/14/2019, 5:09 PMaddamsson
07/14/2019, 5:14 PMaddamsson
07/14/2019, 5:14 PMaddamsson
07/14/2019, 5:44 PMaddamsson
07/14/2019, 5:44 PMaddamsson
07/14/2019, 5:44 PMaddamsson
07/14/2019, 5:45 PMaddamsson
07/14/2019, 5:45 PMsimon.vergauwen
07/14/2019, 6:04 PMsimon.vergauwen
07/14/2019, 6:06 PMsimon.vergauwen
07/14/2019, 6:09 PMaddamsson
07/14/2019, 6:15 PMaddamsson
07/14/2019, 6:15 PMaddamsson
07/14/2019, 7:01 PMaddamsson
07/14/2019, 7:03 PMListK
(which I figured out I'll need if I want to tamper with the list) with some elements the familiar syntax from the stdlib would be listKOf(1, 2, 3)
addamsson
07/14/2019, 7:03 PMlistOf(1, 2, 3).k()
addamsson
07/14/2019, 7:03 PMaddamsson
07/14/2019, 7:04 PMfun <A> List<A>.k(): ListK<A> = ListK(this)
addamsson
07/14/2019, 7:04 PMListK
but I have no idea what the k
meansaddamsson
07/14/2019, 7:05 PMListK
it says it is a wrapper but I see no explanation of the K
. Is it because it is a kind? It has a @higherkind
annotation. But then why the docs says it is just a wrapper? Why not ListW
then? or ListWrapper
. And I still can't remove an element form ListK
because there is no such operationaddamsson
07/14/2019, 7:08 PMList.of(1, 2, 3).remove(1)
and I get all the operations I need. It is approachable and intuitiveaddamsson
07/14/2019, 7:10 PMremove
operation and a persistentListOf(1, 2, 3)
functionaddamsson
07/14/2019, 7:10 PMsimon.vergauwen
07/14/2019, 7:11 PMlistKOf
vs listOf().k()
!simon.vergauwen
07/14/2019, 7:11 PMaddamsson
07/14/2019, 7:12 PMaddamsson
07/14/2019, 7:14 PMTry.invoke { require(1 == 2) }.map {
println("Sorry, I won't be printed :(")
}
addamsson
07/14/2019, 7:14 PMaddamsson
07/14/2019, 7:14 PMTry
addamsson
07/14/2019, 7:14 PM