gpt4 book ai didi

haskell - 仿函数如何在haskell中工作?

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

我正在尝试学习 Haskell,并且我已经掌握了所有基础知识。但现在我被困住了,试图让我的头脑围绕仿函数。

我读过“仿函数将一个类别转换为另一个类别”。这是什么意思?

我知道有很多问题要问,但谁能给我一个 普通英语仿函数的解释或者可能是 简单用例 ?

最佳答案

一个模糊的解释是 Functor是某种容器和相关函数 fmap给定一个转换所包含内容的函数,它允许您更改所包含的任何内容。

例如,列表就是这种容器,例如 fmap (+1) [1,2,3,4] yield [2,3,4,5] .
Maybe也可以做一个仿函数,使得 fmap toUpper (Just 'a') yield Just 'A' .

通用型fmap非常清楚地显示了正在发生的事情:

fmap :: Functor f => (a -> b) -> f a -> f b

并且专门的版本可能会使其更加清晰。这是列表版本:
fmap :: (a -> b) -> [a] -> [b]

和Maybe版本:
fmap :: (a -> b) -> Maybe a -> Maybe b

您可以获得有关标准的信息 Functor使用 :i Functor 查询 GHCI 实例许多模块定义了更多 Functor 的实例s(和其他类型类。)

不过,请不要太认真对待“容器”这个词。 Functor s 是一个定义明确的概念,但您通常可以用这个模糊的类比来推理它。

理解正在发生的事情的最好办法就是阅读每个实例的定义,这应该会让您对正在发生的事情有一个直观的了解。从那里开始,真正使您对概念的理解正式化只是一小步。需要添加的是澄清我们的“容器”究竟是什么,每个实例都非常满足一对简单的定律。

关于haskell - 仿函数如何在haskell中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134825/

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