gpt4 book ai didi

haskell - Haskell 中的基本仿函数

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

我知道 Functor 类型类是这样定义的:

class Functor f where  
fmap :: (a -> b) -> f a -> f b

在我的类(class)中,它说这就是将列表制作为仿函数实例的方式:

instance Functor [] where  
fmap = map

[] a [a] 的某种同义词?

最佳答案

Is [] a some kind of synonym for [a]

是的,正是如此。这两种类型之间没有区别:后者只是前者的漂亮表示法。

在 Haskell 中,所有类型都遵循语法 T arg1 arg2 ...,其中 T 是某种类型构造函数,但其​​中一些类型也有漂亮的硬编码符号为人类提供便利的语言。以下是一些:

a -> b   means (->) a b
[a] means [] a
(a,b) means (,) a b
(a,b,c) means (,,) a b c
... ditto for other tuple types

因此,我们可以找到一个仿函数实例,例如 instance Functor ((->) a),其 fmap 具有类型

(x -> y) -> ((->) a x) -> ((->) a y)

也可以写

(x -> y) -> (a -> x) -> (a -> y)

这样的fmap只是函数组合,即fmap = (.)

关于haskell - Haskell 中的基本仿函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70729598/

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