https://kotlinlang.org logo
Docs
Join the conversationJoin Slack
Channels
100daysofcode
100daysofkotlin
100daysofkotlin-2021
advent-of-code
aem
ai
alexa
algeria
algolialibraries
amsterdam
android
android-architecture
android-databinding
android-studio
androidgithubprojects
androidthings
androidx
androidx-xprocessing
anime
anko
announcements
apollo-kotlin
appintro
arabic
argentina
arkenv
arksemdevteam
armenia
arrow
arrow-contributors
arrow-meta
ass
atlanta
atm17
atrium
austin
australia
austria
awesome-kotlin
ballast
bangladesh
barcelona
bayarea
bazel
beepiz-libraries
belgium
berlin
big-data
books
boston
brazil
brikk
budapest
build
build-tools
bulgaria
bydgoszcz
cambodia
canada
carrat
carrat-dev
carrat-feed
chicago
chile
china
chucker
cincinnati-user-group
cli
clikt
cloudfoundry
cn
cobalt
code-coverage
codeforces
codemash-precompiler
codereview
codingame
codingconventions
coimbatore
collaborations
colombia
colorado
communities
competitive-programming
competitivecoding
compiler
compose
compose-android
compose-desktop
compose-hiring
compose-ios
compose-mp
compose-ui-showcase
compose-wear
compose-web
connect-audit-events
corda
cork
coroutines
couchbase
coursera
croatia
cryptography
cscenter-course-2016
cucumber-bdd
cyprus
czech
dagger
data2viz
databinding
datascience
dckotlin
debugging
decompose
decouple
denmark
deprecated
detekt
detekt-hint
dev-core
dfw
docs-revamped
dokka
domain-driven-design
doodle
dsl
dublin
dutch
eap
eclipse
ecuador
edinburgh
education
effective-kotlin
effectivekotlin
emacs
embedded-kotlin
estatik
event21-community-content
events
exposed
failgood
fb-internal-demo
feed
firebase
flow
fluid-libraries
forkhandles
forum
fosdem
fp-in-kotlin
framework-elide
freenode
french
fritz2
fuchsia
functional
funktionale
gamedev
ge-kotlin
general-advice
georgia
geospatial
german-lang
getting-started
github-workflows-kt
glance
godot-kotlin
google-io
gradle
graphic
graphkool
graphql
graphql-kotlin
graviton-browser
greece
grpc
gsoc
gui
hackathons
hacktoberfest
hamburg
hamkrest
helios
helsinki
hexagon
hibernate
hikari-cp
hire-me
hiring
hongkong
hoplite
http4k
hungary
hyderabad
image-processing
india
indonesia
inkremental
intellij
intellij-plugins
intellij-tricks
internships
introduce-yourself
io
ios
iran
israel
istanbulcoders
italian
jackson-kotlin
jadx
japanese
jasync-sql
java-to-kotlin-refactoring
javadevelopers
javafx
javalin
javascript
jdbi
jhipster-kotlin
jobsworldwide
jpa
jshdq
juul-libraries
jvm-ir-backend-feedback
jxadapter
k2-early-adopters
kaal
kafka
kakao
kalasim
kapt
karachi
karg
karlsruhe
kash_shell
kaskade
kbuild
kdbc
kgen-doc-tools
kgraphql
kinta
klaxon
klock
kloudformation
kmdc
kmm-español
kmongo
knbt
knote
koalaql
koans
kobalt
kobweb
kodein
kodex
kohesive
koin
koin-dev
komapper
kondor-json
kong
kontent
kontributors
korau
korean
korge
korim
korio
korlibs
korte
kotest
kotest-contributors
kotless
kotlick
kotlin-asia
kotlin-beam
kotlin-by-example
kotlin-csv
kotlin-data-storage
kotlin-foundation
kotlin-fuel
kotlin-in-action
kotlin-inject
kotlin-latam
kotlin-logging
kotlin-multiplatform-contest
kotlin-mumbai
kotlin-native
kotlin-pakistan
kotlin-plugin
kotlin-pune
kotlin-roadmap
kotlin-samples
kotlin-sap
kotlin-serbia
kotlin-spark
kotlin-szeged
kotlin-website
kotlinacademy
kotlinbot
kotlinconf
kotlindl
kotlinforbeginners
kotlingforbeginners
kotlinlondon
kotlinmad
kotlinprogrammers
kotlinsu
kotlintest
kotlintest-devs
kotlintlv
kotlinultimatechallenge
kotlinx-datetime
kotlinx-files
kotlinx-html
kotrix
kotson
kovenant
kprompt
kraph
krawler
kroto-plus
ksp
ktcc
ktfmt
ktlint
ktor
ktp
kubed
kug-leads
kug-torino
kvision
kweb
lambdaworld_cadiz
lanark
language-evolution
language-proposals
latvia
leakcanary
leedskotlinusergroup
lets-have-fun
libgdx
libkgd
library-development
linkeddata
lithuania
london
losangeles
lottie
love
lychee
macedonia
machinelearningbawas
madrid
malaysia
mathematics
meetkotlin
memes
meta
metro-detroit
mexico
miami
micronaut
minnesota
minutest
mirror
mockk
moko
moldova
monsterpuzzle
montreal
moonbean
morocco
motionlayout
mpapt
mu
multiplatform
mumbai
munich
mvikotlin
mvrx
myndocs-oauth2-server
naming
navigation-architecture-component
nepal
new-mexico
new-zealand
newname
nigeria
nodejs
norway
npm-publish
nyc
oceania
ohio-kotlin-users
oldenburg
oolong
opensource
orbit-mvi
osgi
otpisani
package-search
pakistan
panamá
pattern-matching
pbandk
pdx
peru
philippines
phoenix
pinoy
pocketgitclient
polish
popkorn
portugal
practical-functional-programming
proguard
prozis-android-backup
pyhsikal
python
python-contributors
quasar
random
re
react
reaktive
realm
realworldkotlin
reductor
reduks
redux
redux-kotlin
refactoring-to-kotlin
reflect
refreshversions
reports
result
rethink
revolver
rhein-main
rocksdb
romania
room
rpi-pico
rsocket
russian
russian_feed
russian-kotlinasfirst
rx
rxjava
san-diego
science
scotland
scrcast
scrimage
script
scripting
seattle
serialization
server
sg-user-group
singapore
skia-wasm-interop-temp
skrape-it
slovak
snake
sofl-user-group
southafrica
spacemacs
spain
spanish
speaking
spek
spin
splitties
spotify-mobius
spring
spring-security
squarelibraries
stackoverflow
stacks
stayhungrystayfoolish
stdlib
stlouis
strife-discord-lib
strikt
students
stuttgart
sudan
swagger-gradle-codegen
swarm
sweden
swing
swiss-user-group
switzerland
talking-kotlin
tallinn
tampa
teamcity
tegal
tempe
tensorflow
terminal
test
testing
testtestest
texas
tgbotapi
thailand
tornadofx
touchlab-tools
training
tricity-kotlin-user-group
trójmiasto
truth
tunisia
turkey
turkiye
twitter-feed
uae
udacityindia
uk
ukrainian
uniflow
unkonf
uruguay
utah
uuid
vancouver
vankotlin
vertx
videos
vienna
vietnam
vim
vkug
vuejs
web-mpp
webassembly
webrtc
wimix_sentry
wwdc
zircon
Powered by Linen
arrow-contributors
  • a

    Arkadii Ivanov

    02/20/2020, 8:31 PM
    Are
    arrow-fx
    tests supposed to work now? Running like
    ./gradlew :arrow-fx-rx2:test
    but no tests are executed.
    r
    • 2
    • 6
  • j

    Jannis

    02/22/2020, 12:01 PM
    Hey, currently there are a few problems that came up after the repo split that concern
    arrow-test
    . • It being in its own repo means other repos will use a snapshot version of it. This means that the changes we are testing are not present in the compiled code of
    arrow-test
    . As an example: I have a pr that changes the signature of a method in
    Applicative
    in
    arrow-core
    . In
    arrow-test
    we have, in
    TraverseLaws
    , a law which uses
    Id.applicative
    and
    IO.applicative
    which both come from the snapshot of
    arrow-core
    . This means they don't have the changes and this leads to `AbstractMethodError`'s at runtime. This was partially solved by @Rachel with a short term workaround already by recompiling
    arrow-test
    with a current version of the current repo before testing. For this pr this meant that the tests using
    Id.applicative
    worked fine, but
    IO.applicative
    still failed because it came from
    arrow-fx
    and that is not being recompiled (it does not even have the required changes!). There are probably other compile issues similar to this, which are less discover-able and harder to debug. • Any change in a core repo that changes a datatypes representation, it's equality instance or any method signature covered by laws has to first change
    arrow-test
    otherwise it will never pass a test. This is a significant hindrance for changes as it leads to lots of fractured prs. In my opinion the best way out of this is to split
    arrow-test
    for each repo, such that
    arrow-core
    has
    arrow-test-core
    etc. Then force
    arrow-test-core
    to only depend on local projects (or other
    arrow-test-*
    ). This would mean that changes to, for example,
    arrow-core
    that would otherwise need to go to
    arrow-test
    are now local. It still means we need to create follow up prs in the other repos, but solves the issues with the laws. Splitting this up is also a fast process which can be done incrementally: Create a new module per repo, copy all laws/generators and eq instances for this repo and last make all local tests depend on it. This technically should mean no test has to change (although some laws may have to change, like
    TraverseLaws
    ). Unrelated to this I'd also propose to rename
    arrow-test
    to something like
    arrow-laws
    as it really only contains laws, generators and equality instances, not actual tests. Thoughts/opinions/other ideas?
    👍 1
    p
    r
    +4
    • 7
    • 29
  • p

    PhBastiani

    02/26/2020, 4:59 PM
    Hi, I noticed references to 'd-arrow' in the incubator module !
    👍 1
    r
    • 2
    • 5
  • j

    Jannis

    02/27/2020, 4:40 PM
    Hi, this is kind of a repeat of last saturdays message: There are a few more problems currently present because of the repo split that need to be addressed: Problems currently (That I can think of): • it is impossible to predict where changes break code. Even for someone who knows almost the entire arrow code base it is hard to predict. This means it is literally impossible for new contributors to predict how much work something will be and equally hard for a maintainer to then judge it for them^^ • Breaking changes will make all master branches of other repos that depend on it breaking. This means no other branch on those repos can merge and integrate it (and thus not be merged at all). This has two side-effects atm: It produces a ton of issues automatically and it stalls development. • Some thought experiments (not yet encountered, but not unlikely especially as we get more and more repos): What do we do if we merge a pr that is breaking, only to then discover (probably much later) that it cannot be solved in upstream libs? Reverting changes is possible yet annoying and could mean a lot of work that will likely fall to maintainers and not the one who did the initial contribution. Same scenario but this time the contributor who introduced the breakage does not solve it on upstream libs. This means yet more work for maintainers. Both of these are extra work for maintainers, which is fine if the maintainer that has to deal with it has a chance to discuss that pr prior, but because we don't know if a pr breaks upstream libs that is hard to do. So this kind of overlaps with the first point. • Overlapping with point 2: Third party libs working on snapshots will get constant (seemingly random) breakages because they always go to latest. And the other libs may or may not have fixed the breakage. This makes snapshots outside the internal arrow ecosystem unusable. Aside from that the snapshots don't work at all anyway atm. There are probably things I am missing but those are the most pressing things atm I think @simon.vergauwen and I were talking about a few things that we could possibly do do improve this. I'll post those in a thread for this message. As always: Ideas/thoughts down below please ^^
    r
    s
    r
    • 4
    • 10
  • p

    PhBastiani

    02/27/2020, 6:43 PM
    Hi @Rachel, what is the purpose of the arrow-docs project of the incubator module ? Note that the configuration of its pom conflicts with that of the global doc module.
    r
    • 2
    • 13
  • p

    pakoito

    03/02/2020, 10:55 AM
    can you please rewrite it without using fx, see if there’s any improvement?
    p
    j
    • 3
    • 10
  • p

    pakoito

    03/02/2020, 3:17 PM
    Better metrics than cats when using flatMap :D
    🎉 2
    s
    r
    k
    • 4
    • 4
  • a

    aballano

    03/03/2020, 4:04 PM
    Hi there! We’re actively working on releasing the next arrow version, 0.10.5, that comes with some deprecations, quite a lot of fixes and improvements, before moving to 0.11 and BIO and other interesting features 🙂 So far we’ve merged most of the PRs, only 2 left Changes in tests + fixes from myself -> https://github.com/arrow-kt/arrow-fx/pull/46/ Deprecate ap from @Jannis -> https://github.com/arrow-kt/arrow-core/pull/40 Please, if you have something in mind that should be added to this release, don’t hesitate on replying on a thread!
    👏 5
    j
    r
    +2
    • 5
    • 19
  • d

    dnowak

    03/06/2020, 3:05 PM
    Hi, is somewhere available the documentation for 0.11.0?
    a
    s
    +2
    • 5
    • 62
  • g

    Gopal S Akshintala

    03/16/2020, 11:18 AM
    Hi, for contributing to Arrow lib is there any setup and guideline doc? I referred this, but felt it’s not comprehensive: https://github.com/arrow-kt/arrow/blob/master/docs/move-to-multi-repo/README.md Cc: @Rachel
    r
    p
    • 3
    • 29
  • a

    aballano

    03/18/2020, 1:20 PM
    Hi folks, I’m trying to reactivate the ConcurrentLaws tests in incubator but I got no luck so far, it seems there’s a flaky scenario specifically within the
    cancellableReceivesCancelSignal
    test, any help here would be greatly appreciated. Also, I noticed that incubator provides its own instances of genK and eqK for IO -> https://github.com/arrow-kt/arrow-incubator/blob/master/arrow-mtl-data/src/test/kotlin/arrow/mtl/test/generators/GenK.kt#L20 so I’d also like to ask if there’s a specific reason not to use the provided in fx-test // cc @Jannis
    s
    j
    • 3
    • 25
  • s

    Satyam Agarwal

    04/04/2020, 11:10 AM
    r
    • 2
    • 4
  • r

    raulraja

    04/08/2020, 10:00 AM
    A proposal for a new kind encoding we need to support N-arity in type class hierarchies for Bifunctor and Trifunctor, … effects https://github.com/arrow-kt/arrow-core/issues/88
    p
    d
    • 3
    • 7
  • s

    stojan

    04/25/2020, 1:06 PM
    I'm working on a retrofit
    CallAdapter
    that would work with:
    interface Service {
    
        @GET("/")
        suspend fun bodyEither(): Either<String, String>
    
        @GET("/")
        suspend fun bodyResponseE(): ResponseE<String, String>
    }
    
    // a more FP/Kotlin friendly version of retrofit2.Response
    data class ResponseE<E, A>(
        val raw: okhttp3.Response,
        val code: Int,
        val message: String?,
        val headers: Headers,
        val body: Either<E, A>
    ) {
    
        val isSuccessful: Boolean = raw.isSuccessful
    }
    where the you can put the error body on the left. Would that be a good fit for
    arrow-integrations
    ?
    r
    h
    h
    • 4
    • 11
  • p

    pakoito

    04/28/2020, 11:55 PM
    +1 or -1 for renaming
    Either.cond
    to
    Either.invariant
    and making the left side the error one?
    h
    • 2
    • 1
  • p

    pakoito

    05/02/2020, 8:15 PM
    anyone else would like to chime in?
    a
    • 2
    • 3
  • h

    Hiosdra

    05/06/2020, 9:09 AM
    ⬆️ (about above 3 messages) when should I plan to have any CR? (not rushing but planning) 😉
    a
    • 2
    • 4
  • s

    Satyam Agarwal

    05/07/2020, 4:22 PM
    no, but you can do it like this :
    fun <A> Validated<NonEmptyList<YourType>, A>.toIO(): IO<A> {
        return when (this) {
            is Valid -> this.a.just()
            is Invalid -> YourErrorType(this.e).raiseError()
        }
    }
    👏🏼 1
    🔝 2
    a
    p
    • 3
    • 2
  • p

    pablisco

    05/09/2020, 7:55 PM
    Hey everyone, I’m wondering if anyone has had this issue before and how to resolve it. I’m creating a new module in the
    arrow-fx
    project and I need to target
    jdk8
    . I’ve changed the dependency to kotlin to use
    kotlin-stdlib-jdk8
    and I’ve added the following:
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"
    I wasn’t sure if I needed both (kotlin and java compatibility markers) but I was trying to make it work. I’ve even changed
    JAVA_VERSION
    to be
    1.8
    on the modules
    gradle.properties
    file. Any who, despite all these changes, I’m getting the following errors from Animal Sniffer:
    [Undefined reference] arrow.fx.(_IO.kt:19)
      >> boolean java.util.concurrent.CompletableFuture.complete(Object)
    
    [Undefined reference] arrow.fx.(_IO.kt:20)
      >> boolean java.util.concurrent.CompletableFuture.completeExceptionally(Throwable)
    
    [Undefined reference] arrow.fx.(_IO.kt:21)
      >> boolean java.util.concurrent.CompletableFuture.completeExceptionally(Throwable)
    
    [Undefined reference] arrow.fx.(_IO.kt:8)
      >> Object java.util.concurrent.CompletableFuture.get()
    
    [Undefined reference] arrow.fx.(_IO.kt:16)
      >> java.util.concurrent.CompletableFuture
    
    [Undefined reference] arrow.fx.(_IO.kt:16)
      >> void java.util.concurrent.CompletableFuture.<init>()
    
    [Undefined reference] arrow.fx.(_IO.kt:12)
      >> boolean java.util.concurrent.CompletableFuture.cancel(boolean)
    I’m having a look at this ticket: https://github.com/arrow-kt/arrow-fx/issues/153 These APIs were introduced on the jdk8, so this module needs to target that version (hence why it’s a separate module) Anyone has experienced on how to configure animal sniffer in this instance? If you want to check it locally this is the branch: https://github.com/arrow-kt/arrow-fx/tree/pabs-completable-future-integration
    s
    • 2
    • 11
  • s

    stojan

    05/11/2020, 4:31 PM
    how do I update this page? -> https://arrow-kt.io/docs/0.10/quickstart/projects/ I wanna add a new project 🙂
    r
    r
    • 3
    • 4
  • d

    dnowak

    05/13/2020, 3:06 PM
    Hi, I’m working on integrating Micrometer with
    IO
    . I simply want to register the time it took to execute the
    IO
    . I have implemented
    .timed
    extension function that can be executed on IO. But I also want to have the possibility to call
    .timed
    on a function that returns IO. And have to generate 22 versions of that method 🙂. You have probably had the same “issue” (like with
    memoize
    ). Do you have some ready to copy solution 🙂?
    r
    a
    • 3
    • 9
  • s

    stojan

    05/16/2020, 11:00 AM
    anyone else has thoughts on this -> https://github.com/arrow-kt/arrow-integrations/pull/26
    👍 1
    r
    s
    • 3
    • 20
  • h

    Hadi Lashkari

    05/19/2020, 10:13 AM
    Hi everyone! I'm new in FP, category theory, etc. world but a decent Kotlin developer! I want to start contributing on arrow. Mostly interested on making it multiplatform. Do you mind to introduce me some simple issues that I can jump in? 😄
    p
    • 2
    • 18
  • s

    stojan

    05/21/2020, 7:27 PM
    I applied the suggestions by @Leandro Borges Ferreira https://github.com/arrow-kt/arrow-integrations/pull/26 this PR is now ready to review and hopefully merge 😄
    👍 1
    a
    • 2
    • 2
  • h

    Hadi Lashkari

    05/26/2020, 6:39 AM
    Hi everyone! I created a PR https://github.com/arrow-kt/arrow-core/pull/129 to add
    filterIsInstance
    and
    traverseFilterIsInstance
    but I have a problem •
    arrow-meta
    cannot handle
    java.lang.Class
    correctly. It generates
    import kotlin.Class
    which doesn't exist! I tried to add
    .replace("java.lang.Class", "")
    in
    fun String.asKotlin(): String
    but it didn't solve the problem! Also in
    fun TypeName.Classy.asKotlin(): TypeName.Classy
    there is a condition for
    Iterable
    but didn't work with
    Class
    ! • Also I tried with
    kotlin.reflect.KClass<T : Any>
    but
    arrow-meta
    cannot handle the
    T : Any
    part! Any suggestion to solve it?
    • 1
    • 2
  • h

    Hiosdra

    06/01/2020, 11:30 AM
    Hi, I’m about: https://github.com/arrow-kt/arrow-integrations/pull/28 I found problem to solve: In case of returning
    IO<Nothing, A>
    Kotlin compiler(??? or Jvm?) erases all information about generics in this class. If method returns
    IO<E, A>
    where E is any type but
    Nothing
    , generic info is kept. Retrofit integration needs generic info, because Retrofit is a runtime library. I’ve also tested merged into master suspend + Either integration and it fails in the same place. Do anyone has some more knowledge about bytecode representation of
    Nothing
    and why compiler/Jvm do that only for
    Nothing
    type? Below are photos with brakepoint on
    adapterType = method.getGenericReturnType()
    (HttpServiceMethod.java:62)
    r
    s
    • 3
    • 2
  • h

    HieiJ

    06/03/2020, 7:18 AM
    Hi, during the last couple of days I've tried to handle this issue: https://github.com/arrow-kt/arrow-fx/issues/168 I've selected this as an opportunity to better understand FP and how Arrow works and at the same time to give my little help to this project. Actually the problem behind this issue was bigger than expected, as the fix on
    ParApplicative
    was quite easy but then it let some other hidden bugs come out... One on IO related to stack safety and one on Rx2 related to fork/join. I've patched the code in order to make it work but, without knowledge about the rationale of the design of the code, I suppose that there could be better ways to solve them. Anyway, my PR is: https://github.com/arrow-kt/arrow-fx/pull/167. How should I proceed now?
    r
    • 2
    • 1
  • r

    raulraja

    06/04/2020, 9:58 AM
    For those of you that have seen and reviewed @simon.vergauwen work in the suspend library over the last 4 weeks introducing suspend without IO and the same power please show your approval or comments here today. This is going in today to get a snapshot ready for Kotliners. https://github.com/arrow-kt/arrow-fx/pull/169
    :arrow: 9
    👏 7
    😍 8
    p
    s
    • 3
    • 10
  • a

    Attila Domokos

    06/05/2020, 2:59 PM
    Is there a documentation on how to pull Arrow's source code and build it locally? A kind of intro to contributing to Arrow...
    r
    • 2
    • 21
  • r

    Rachel

    06/05/2020, 3:48 PM
    A humble tribute to all the contributors 👏 👏 👏
    👏 17
    p
    r
    • 3
    • 8
Powered by Linen
Title
r

Rachel

06/05/2020, 3:48 PM
A humble tribute to all the contributors 👏 👏 👏
👏 17
Ordered by GitHub id
@pakoito, you have the old look there 😅
p

pakoito

06/05/2020, 3:50 PM
it's the github avatar, right?
that remains the same
😄
r

Rachel

06/05/2020, 3:51 PM
😂
r

rcd27

06/06/2020, 10:12 AM
Guys, I've just added docs for
MapK
😅 Can you make my pic tiny? 😄
r

Rachel

06/08/2020, 8:42 AM
Hi @rcd27!! I think you appears in the third row when starting from the end (11th column). Thank you so much for your contributions!!
View count: 6