相关疑难解决方法(0)

如果f是类型a-> b的函数,(fmap f)是否与(f。)相同?

我正在尝试实现一个Functor实例

data ComplicatedA a b
    = Con1 a b
    | Con2 [Maybe (a -> b)]
Run Code Online (Sandbox Code Playgroud)

对于Con2,我的思维过程是fmap必须类似于

fmap f (Con2 xs) = Con2 (map f' xs)
Run Code Online (Sandbox Code Playgroud)

那么我需要一个列表映射函数f'像

Maybe (a -> x) -> Maybe (a -> y)
Run Code Online (Sandbox Code Playgroud)

由于Maybe是函子,所以我可以像

fmap ((a->x) -> (a->y))
Run Code Online (Sandbox Code Playgroud)

为了得到((a->x) -> (a->y)),我想我可以做的 fmap (x->y)就是(fmap f)

所以我的事

instance Functor (ComplicatedA a) where
    fmap f (Con1 x y) = Con1 x (f y)
    fmap f (Con2 xs) = Con2 (map (fmap (fmap f)) xs)
Run Code Online (Sandbox Code Playgroud)

然而,真正的解决方案使用 …

haskell functor

7
推荐指数
1
解决办法
142
查看次数

标签 统计

functor ×1

haskell ×1