有没有优雅的方法将List转换为kotlin和arrow中的NonEmptyList?

gal*_*rio 0 kotlin arrow-kt

fun main() {
    val list = listOf(1, 2, 3, 4, 5) 

    if (list.isNotEmpty()) {
        Nel(list[0], list.subList(1, list.lastIndex))
    }
}
Run Code Online (Sandbox Code Playgroud)

根据箭头文件,它似乎能够通过Semigroup或Monad binding.但是,没有代码来替换List使用NonEmptyList.

有没有更好的办法来代替List用NonEmptyList不用subList?

Ren*_*ene 5

有一个伴侣功能fromList返回一个Option<NonEmptyList>或如果您确定使用fromListUnsafe:

val list = listOf(1, 2, 3, 4, 5)

val nelistOption = NonEmptyList.fromList(list)

val nelist = NonEmptyList.fromListUnsafe(list)
Run Code Online (Sandbox Code Playgroud)