作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习 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]
fmap :: (a -> b) -> Maybe a -> Maybe b
Functor
使用
:i Functor
查询 GHCI 实例许多模块定义了更多
Functor
的实例s(和其他类型类。)
Functor
s 是一个定义明确的概念,但您通常可以用这个模糊的类比来推理它。
关于haskell - 仿函数如何在haskell中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134825/
我是一名优秀的程序员,十分优秀!