Hi everyone! I’m looking forward to contributing t...
# arrow-contributors
a
Hi everyone! I’m looking forward to contributing to arrow. I found noob-friendly issues in github, but they are old. Are there any actual ones? Thanks.
r
Hi Anton and thank you for you interest in contributing to Arrow!. We are coming close to 1.0 and we are going to create some issues for contributors to pick up regarding increasing code coverage and adding test for different functions. If there is any specific area that interests you or you’d like to learn we can probably find something to improve in there too 🙂.
a
Thanks for a quick reply 🙂 I’ve been working with Java for some time, now switching to Kotlin and the functional programming in particular, this is new for me. I’m interested in adding new functional constructs, but I don’t mind to write unit tests for existing ones to gain more insights into the library.
r
I would suggest potentially two paths. 1. If you are interested in learning the basics and potentially identifying missing apis that can be added in the future to Arrow I’d start with enabling code coverage and focusing a PR on a particular data type or set of functions like Either or others. This would help arrow increase codecov that we need for 1.0 and would give you an idea on how we encode data types and abstractions. 2. If you want a bigger challenge we have also a few issues like this one https://github.com/arrow-kt/arrow/issues/2389 which is essentially providing the same capabilities
either
computation expressions have in Arrow to the new stable
Result
data type from the std lib. Result is like Either but instead of parametric to an error
E
is fixed to Throwable. This task would be mostly following and replicating how the
EitherEffect
is encoded in Arrow today.
arrow 1
👀 2
The first task would expose as to how we encode Either and the most performant way to derive its combinators and the second task would expose you to monad comprehensions, continuations and in general how Kotlin understands effects through its suspension system.
a
Thanks, gonna look deeper into them.
👍 1
p
Welcome to the World of Arrow Anton 👋 🙂
✌️ 1
a
Alright, I’ve done some code/docs reading work, some clarification regarding two paths listed above: 1. So I take e.g. all Either methods and manually look for ones which has not yet been covered and write unit tests, is it correct (I tried to run tests in Idea with Coverage, but is reported misleading results like the inline function which is clearly called in test is not covered)? 2. Here I implement ResultEffect which is similar to EitherEffect (suspended/restricted versions). I think I can do this. Should I write/mark somehow in https://github.com/arrow-kt/arrow/issues/2389 that this one is on me?
r
@Anton Ivanov yes! if yo go for 1 is enabling codecov first at the build level. Not sure about the inline functions. Regarding 2 yes, feel free to claim it by commenting in the issue.
p
I have a partial implementation if you want to take over or merge with what you have 😁 https://www.github.com/arrow-kt/arrow/tree/pablisco%2Fresult_comprehensions/
👀 1
a
@pablisco Thanks! Gonna finish Either test coverage, then take your result. Actually I don’t have anything on result comprehension yet :)
👍 1
p
That’s great 🙂 This is mostly a clone of what we have on Either, so you’ll probably be in a better position to update the tests to match them 💯