Haskell:访问自定义列表类型的元素

吉列特延

我是 Haskell 的新手,在访问自定义类型的元素时遇到问题。

我有这些声明:

import Data.Char
import Data.List

data Objekt = Objekt Suit Value
  deriving(Eq,Show)
data Suit = Hearts | Spades | Diamonds | Clubs
  deriving(Eq,Show)
data Value = Seven | Eight | Nine | Ten | Jack | Queen | King | Ace
  deriving(Eq,Show)

data Deck = Deck [Objekt]
  deriving(Eq,Show)

现在,我正在创建一个像这样的甲板:

let deck = Deck [Objekt Hearts Seven, Objekt Clubs Queen]

然后我想检查一下甲板:

elem (Objekt Hearts Seven) deck

我收到一个错误:

*Main> elem (Objekt Hearts Seven) deck

<interactive>:8:28: error:
    • Couldn't match expected type ‘[Objekt]’ with actual type ‘Deck’
    • In the second argument of ‘elem’, namely ‘deck’
      In the expression: elem (Objekt Hearts Seven) deck
      In an equation for ‘it’: it = elem (Objekt Hearts Seven) deck

甲板显示以下内容:

*Main> deck
Deck [Objekt Hearts Seven,Objekt Clubs Queen]
*Main> :t Deck
Deck :: [Objekt] -> Deck

无论我做什么(我尝试使用地图或列表推导式),我都无法访问牌组的元素。我搜索了一整天,但似乎找不到任何自定义列表类型及其访问的示例。

我是否正确地进行了声明?

我如何测试或提取我的牌组的元素?

有人有想法吗?任何帮助将不胜感激...谢谢

Deck 是一种不同于列表类型的类型,但它恰好包含一个列表。

您可以Deck使用值构造函数将列表转换为 a

Deck :: [Objekt] -> Deck

这是您在 eg 中使用的内容let deck = Deck [....]

您可以Deck使用一个小的辅助函数将一个back 转换为一个列表,您可以将其添加到您的文件中:

unDeck :: Deck -> [Objekt]
unDeck (Deck os) = os

在此之后,您可以使用elem someObjekt (unDeck someDeck).

正如 Nykros 指出的那样,另一种选择是使用模式匹配。如果您正在学习 Haskell,我建议您习惯模式匹配,因为它在 Haskell 中非常惯用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问Haskell中的自定义类型变量的元素?

来自分类Dev

访问自定义Haskell数据类型的函数

来自分类Dev

Haskell访问自定义数据类型中的字段

来自分类Dev

遍历自定义类型并访问haskell中的属性

来自分类Dev

在Haskell中自定义列表中的元素相乘

来自分类Dev

Elm:自定义类型的访问值

来自分类Dev

如何访问自定义元素的主机

来自分类Dev

如何访问自定义元素的主机

来自分类Dev

访问自定义元素的子节点?

来自分类Dev

基于列表定义自定义集合类。如何访问存储在实例中的元素?

来自分类Dev

访问自定义课程列表的成员

来自分类Dev

展开自定义列表类型

来自分类Dev

在Haskell中按某些属性对自定义数据类型列表进行排序

来自分类Dev

如何在Haskell中检查自定义数据类型列表的长度?

来自分类Dev

从Haskell中的自定义数据类型制作列表(也可以反向操作)

来自分类Dev

尝试在 Haskell 中构建自定义数据类型列表

来自分类Dev

SML NJ-多态自定义列表类型和元素求和

来自分类Dev

将元素添加到包含自定义数据类型的简单链接列表中

来自分类Dev

是否可以从包含自定义类型元素的列表中删除重复项?

来自分类Dev

如何在Go中创建自定义类型元素的自定义类型数组?

来自分类Dev

如何定义不是列表的自定义插槽类型?

来自分类Dev

使我的自定义列表类返回“列表”作为类型

来自分类Dev

Haskell-从自定义类型返回项目

来自分类Dev

Haskell自定义数据类型和表示

来自分类Dev

具有自定义数据类型的Haskell加法

来自分类Dev

具有自定义数据类型的Haskell加法

来自分类Dev

反转Haskell中的自定义嵌套列表

来自分类Dev

在PostgreSQL C函数中访问自定义类型的数组

来自分类Dev

通过名称访问自定义python类型属性

Related 相关文章

  1. 1

    访问Haskell中的自定义类型变量的元素?

  2. 2

    访问自定义Haskell数据类型的函数

  3. 3

    Haskell访问自定义数据类型中的字段

  4. 4

    遍历自定义类型并访问haskell中的属性

  5. 5

    在Haskell中自定义列表中的元素相乘

  6. 6

    Elm:自定义类型的访问值

  7. 7

    如何访问自定义元素的主机

  8. 8

    如何访问自定义元素的主机

  9. 9

    访问自定义元素的子节点?

  10. 10

    基于列表定义自定义集合类。如何访问存储在实例中的元素?

  11. 11

    访问自定义课程列表的成员

  12. 12

    展开自定义列表类型

  13. 13

    在Haskell中按某些属性对自定义数据类型列表进行排序

  14. 14

    如何在Haskell中检查自定义数据类型列表的长度?

  15. 15

    从Haskell中的自定义数据类型制作列表(也可以反向操作)

  16. 16

    尝试在 Haskell 中构建自定义数据类型列表

  17. 17

    SML NJ-多态自定义列表类型和元素求和

  18. 18

    将元素添加到包含自定义数据类型的简单链接列表中

  19. 19

    是否可以从包含自定义类型元素的列表中删除重复项?

  20. 20

    如何在Go中创建自定义类型元素的自定义类型数组?

  21. 21

    如何定义不是列表的自定义插槽类型?

  22. 22

    使我的自定义列表类返回“列表”作为类型

  23. 23

    Haskell-从自定义类型返回项目

  24. 24

    Haskell自定义数据类型和表示

  25. 25

    具有自定义数据类型的Haskell加法

  26. 26

    具有自定义数据类型的Haskell加法

  27. 27

    反转Haskell中的自定义嵌套列表

  28. 28

    在PostgreSQL C函数中访问自定义类型的数组

  29. 29

    通过名称访问自定义python类型属性

热门标签

归档