将函数应用于树结构时可以匹配期望类型

用户8314628

在此处输入图片说明

data Forky a = Tip a | Branch (Forky a) (Forky a)
    deriving (Eq, Show)

instance Functor Forky where
    -- fmap :: (a -> b) -> Forky a -> Forky b
    fmap f (Tip a) = Tip (f a)
    fmap f (Branch left right) = Branch (fmap f left) (fmap f right)

instance Applicative Forky where
    -- pure :: a -> Forky a
    pure a = Tip a

    -- (<*>) :: Forky (a -> b) -> Forky a -> Forky b
    (<*>) (Branch f g) (Branch left right) = 
        Branch ((fmap f (Branch left right)) (fmap g (Branch left right)))

一切看起来都不错,直到最后一个功能 (<*>)

错误告诉

 ? Couldn't match expected type ‘a -> b0’
                  with actual type ‘Forky (a -> b)’

我该如何解决?谢谢!

切普纳

Branch f g,f并且g不是类型的函数a -> b它们是类型的子树Forky (a -> b)因此,您需要使用<*>而非fmap来应用它们。

(Branch fs gs) <*> (Branch left right) = Branch (fs <*> left) (gs <*> right)

此外,您需要考虑在提示中有函数的情况:

(Tip f) <*> (Tip a) = ?

您还应该考虑如果两个参数的形状不同,您会怎么做:

(Tip f) <*> (Branch left right) = ?
(Branch fs gs) <*> (Tip a) = ?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将条件应用于结构并产生结构类型的列表

来自分类Dev

将const调用应用于原始类型时,是否可以提高性能?

来自分类Dev

错误:将默认类型'int * int'应用于类型推断变量时,类型约束不匹配

来自分类Dev

函数,将函数应用于列表

来自分类Dev

使用Scala宏将类型构造函数应用于生成的类型参数

来自分类Dev

将混合类型(可能是适用类型)的参数应用于函数的最佳方法

来自分类Dev

将函数应用于字典值

来自分类Dev

将函数应用于矩阵的多行

来自分类Dev

将函数应用于元素列表

来自分类Dev

Django的。将函数应用于queryset

来自分类Dev

将isAlpha应用于递归函数

来自分类Dev

将函数应用于元素列表

来自分类Dev

将函数应用于变量

来自分类Dev

将函数应用于元组数组

来自分类Dev

Matlab:将函数应用于向量

来自分类Dev

将函数应用于数据框

来自分类Dev

将函数应用于字典

来自分类Dev

将函数应用于整个表

来自分类Dev

如何将具有泛型的函数类型应用于函数

来自分类Dev

如何定义将多态函数应用于特定类型的高阶函数

来自分类Dev

将密钥应用于通过Scala中的模式匹配获得的地图(已删除类型)

来自分类Dev

cublas中是否有可以将S型函数应用于矢量的函数?

来自分类Dev

函数列表:仅将附加参数应用于可以使用它的那些函数

来自分类Dev

将匹配函数重复应用于R中的多个数据帧

来自分类Dev

使用命名参数时出现“错误:应用于此参数的函数的类型为...”

来自分类Dev

使用命名参数时出现“错误:应用于此参数的函数的类型为...”

来自分类Dev

当我尝试将tf-idf应用于测试集时,尺寸不匹配

来自分类Dev

Core Haskell将类型应用于函数意味着什么?

来自分类Dev

发生“无法将类JSONParser中的构造函数JSONParser应用于给定类型”的错误

Related 相关文章

  1. 1

    将条件应用于结构并产生结构类型的列表

  2. 2

    将const调用应用于原始类型时,是否可以提高性能?

  3. 3

    错误:将默认类型'int * int'应用于类型推断变量时,类型约束不匹配

  4. 4

    函数,将函数应用于列表

  5. 5

    使用Scala宏将类型构造函数应用于生成的类型参数

  6. 6

    将混合类型(可能是适用类型)的参数应用于函数的最佳方法

  7. 7

    将函数应用于字典值

  8. 8

    将函数应用于矩阵的多行

  9. 9

    将函数应用于元素列表

  10. 10

    Django的。将函数应用于queryset

  11. 11

    将isAlpha应用于递归函数

  12. 12

    将函数应用于元素列表

  13. 13

    将函数应用于变量

  14. 14

    将函数应用于元组数组

  15. 15

    Matlab:将函数应用于向量

  16. 16

    将函数应用于数据框

  17. 17

    将函数应用于字典

  18. 18

    将函数应用于整个表

  19. 19

    如何将具有泛型的函数类型应用于函数

  20. 20

    如何定义将多态函数应用于特定类型的高阶函数

  21. 21

    将密钥应用于通过Scala中的模式匹配获得的地图(已删除类型)

  22. 22

    cublas中是否有可以将S型函数应用于矢量的函数?

  23. 23

    函数列表:仅将附加参数应用于可以使用它的那些函数

  24. 24

    将匹配函数重复应用于R中的多个数据帧

  25. 25

    使用命名参数时出现“错误:应用于此参数的函数的类型为...”

  26. 26

    使用命名参数时出现“错误:应用于此参数的函数的类型为...”

  27. 27

    当我尝试将tf-idf应用于测试集时,尺寸不匹配

  28. 28

    Core Haskell将类型应用于函数意味着什么?

  29. 29

    发生“无法将类JSONParser中的构造函数JSONParser应用于给定类型”的错误

热门标签

归档