gpt4 book ai didi

scala - 它如何是自然的转变?

转载 作者:行者123 更新时间:2023-12-02 02:24:06 25 4
gpt4 key购买 nike

我将使用精彩的图书馆https://tpolecat.github.io/doobie/它功能齐全。

我正在通过first example我已经认识到:

A Transactor is a data type that knows how to connect to a database, hand out connections, and clean them up; and with this knowledge it can transform ConnectionIO ~> IO, which gives us a program we can run.


ConnectionIO ~> IO是范畴论中的自然变换,但一直没有完全理解,究竟什么是自然变换。

但是,我知道这是从一个类别到另一个类别的转变。例如:
F[A] ~> G[A]

是类别 F 的自然变换至 G在不改变内容的情况下。

不是所有东西都可以自然转换,问题是,library doobie 的作者怎么知道,他可以从 ConnectionIO ~> IO 进行自然转换?

最佳答案

I know it [natural transformation] is transformation from one category into other category.



其实没有。从范畴到范畴的转换是仿函数(它将对象映射到对象,态射到态射)。自然转换是从仿函数到仿函数的转换(即,它是仿函数类别中的态射)。

Scala 中的类型类别是 category .它的对象是类型,它的 morphisms是函数(不是函数类型)。

例如 ListOptionfunctors .它们将对象映射到对象(类型 A 到类型 List[A],类型 A 到类型 Option[A])和态射到态射(函数 f: A => B 到函数 _.map(f) : List[A] => List[B],函数 f: A => B 到函数 _.map(f) : Option[A] => Option[B] )。

例如 headOptionnatural transformation ( List ~> Option)
val headOption: (List ~> Option) = new (List ~> Option) {
def apply[A](as: List[A]): Option[A] = as.headOption
}

或在多蒂
val headOption: [A] => List[A] => Option[A] = 
[A] => (as: List[A]) => as.headOption

What is a natural transformation in haskell?

存在不断发展的抽象序列:
  • 范畴(及其对象和态射),
  • 态射的范畴(它的对象是态射,它的态射是交换平方),
  • 范畴的范畴(它的对象是范畴,它的态射是仿函数),
  • 仿函数的范畴(它的对象是仿函数,它的态射是自然变换),
  • ...

  • https://github.com/hmemcpy/milewski-ctfp-pdf/releases/tag/v1.3.0

    https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_

    Not everything can be naturally transformed and the question is, how do the author of library doobie know, that he can do the natural transformation from ConnectionIO ~> IO?



    实际上,如果您有 map 系列 ConnectionIO[A] => IO[A] ( A 运行在所有类型上)并且这个族是使用参数多态性定义的(而不是临时多态性,即类型类,即在没有对类型 A 的额外假设的情况下定义)=参数性,然后自然性遵循参数性“免费”。这是“免费定理”之一

    https://bartoszmilewski.com/2014/09/22/parametricity-money-for-nothing-and-theorems-for-free/

    https://www.reddit.com/r/haskellquestions/comments/6fkufo/free_theorems/

    https://ttic.uchicago.edu/~dreyer/course/papers/wadler.pdf

    Good introduction to free theorems

    关于scala - 它如何是自然的转变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61960312/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com