有没有优雅的方法可以在 kotlin 和箭头中将 List 变成 NonEmptyList?

Are there elegant ways to turn a List into a NonEmptyList in kotlin and arrow?

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

    if (list.isNotEmpty()) {
        Nel(list[0], list.subList(1, list.lastIndex))
    }
}

根据arrow文档,似乎可以通过SemigroupMonad binding来完成。 但是,没有代码将 List 替换为 NonEmptyList.

有没有更好的方法可以在不使用 subList 的情况下将 List 替换为 NonEmptyList

有一个配套函数 fromList return 和 Option<NonEmptyList> 或者如果您确定使用 fromListUnsafe:

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

val nelistOption = NonEmptyList.fromList(list)

val nelist = NonEmptyList.fromListUnsafe(list)