如何使用Arrow创建自己的数据类型

pab*_*sco 8 android kotlin arrow-kt

使用箭头时创建自己的数据类型有哪些步骤.

它使用简单,像Option与所提供的扩展名建设者像Some(data)或None.但是,如何创建自己的数据类型,其中包含函数运算符map()或flatMap()?

Raú*_*nez 2

在 Arrow 中创建符合 Type 类Functor并因此提供如下方法的数据类型的步骤map如下:

  1. 启用更高级的类型仿真。https://arrow-kt.io/docs/patterns/glossary/#higher-kinds

  2. 实现类型类实例 https://arrow-kt.io/docs/patterns/glossary/#using-higher-kinds-with-typeclasses

在上面的两个链接中,有一个使用ListK包装 std lib 的示例List。文档示例没有提到的是,为了扩展 Functor 将在 ListK 上添加的扩展,包括接口中定义的 、 等,map它需要 kapt 和 arrow meta。liftFunctor

kapt    "io.arrow-kt:arrow-meta:$arrow_version"
Run Code Online (Sandbox Code Playgroud)

Arrow meta 负责扩展类型类实例的更高种类和扩展。当前扩展的一个限制是,如果您计划在同一模块中使用两者@higherkind,@extension则由于 kapt 处理的顺序,它将无法工作。为此,您需要在一个模块中拥有数据类型,并在不同的模块中拥有扩展。这实际上是一个很好的实践,也是我们在 Arrow 中遵循的做法,因为它允许用户在不需要扩展时按菜单导入数据类型。