Hi everyone. I started to learn arrow recently. I ...
# arrow
g
Hi everyone. I started to learn arrow recently. I feel that arrow’s API changes frequently. So I chose to use 1.0.0-SNAPSHOT. But I found out that higher kinded types and some type classes are deprecated in this version!!! This is closer to kotlin primitive at the same time more different to haskell. Should I continue to learn on 1.0.0-SNAPSHOT ? And whether it is possible to publish the Roadmap for arrow? thanks🙏
r
Hi @Giovan, It’s best to use currently 0.13.2. Arrow has deviated from the Haskell and Scala encodings and embraced suspend and continuations which allows us to express similar things with the same safety but not so much emphasis in kind polymorphism. Arrow 1.0 is expected to be released some time this summer and at this moment 0.13.2 reflects most of what goes in there. We are not adding new major features to arrow core, fx or optics before the release.
g
@raulraja Thank you for your answer, but I still do not understand why it is necessary to deprecated Higher Kinded Types, Did this conflict with embraced suspend and continuations?
r
Yes, higher kinded types are not supported by Kotlin and forces users to have to manually call
fix()
when using polymorphism. This is not an API we would like to promote for FP in Kotlin as it’s emulated and not natively supported. Kind emulation forces users to box third party types they don’t control, like in our case
List
with ListK. For those reasons we decided to abandon support for kinds until compiler plugins are natively supported and they can cooperate with the Kotlin IDEA plugin. At that point we may consider a compiler plugin for kinds with deeper integration and if users are not forced to call
fix
themselves and types unify properly we could bring it back as a compiler plugin feature but it would not be part of arrow-core.
g
I got it, thanks for your patient answer. Is there a complete example of arrow in android?
r
No problem!, regarding Android both Arrow core and Arrow Fx coroutines integrate transparently with it, so it would be similar to how you are doing other coroutine based apps on Android and where you may use apis like
parZip
and other from fx. There is no recommended architecture AFAIK but others may be able to answer this better as I don’t really work with Android :)
🙌 1