小编Jes*_*sse的帖子

Haskell中的snd函数如何在过滤器中工作

我将此代码输入ghci

Prelude> filter snd [('a',True),('b',True),('c',False),('d',True)]
Run Code Online (Sandbox Code Playgroud)

为什么返回

[('a',True),('b',True),('d',True)]
Run Code Online (Sandbox Code Playgroud)

而不是

[('a',True),('c',False),('d',True)]
Run Code Online (Sandbox Code Playgroud)

snd函数返回第二个项目,那么为什么不filter snd过滤第二个项目呢?

haskell filtering predicate list filter

3
推荐指数
2
解决办法
193
查看次数

无法解析 data/newtype 声明中的数据构造函数

我有类型卡,由花色和等级组成,

data Suit = A|B deriving (Show, Eq)
data Rank = 1|2 deriving (Show, Eq)
data Card = Card Suit Rank deriving (Show, Eq)
Run Code Online (Sandbox Code Playgroud)

数据 Rank 函数似乎是错误的,因为 Int 不能是类型构造函数,以及如果我的卡片是 A1|B1|A2|B2 如何创建正确的函数

谢谢

haskell

2
推荐指数
1
解决办法
1125
查看次数

实例声明并将字符串转换为Maybe类型

一个猜谜游戏。每张卡都包含一个西装,A,B,C,D,E,F,G中的一个,以及一个等级,1 | 2 | 3中的一个。

我需要一个函数来保证input(String)是否为有效类型。并且还要编写一个实例声明,以使类型位于Show类中。

我不确定函数toCard,如何在函数中表达“字符串”并满足条件。

data Suit = A|B|C|D|E|F|G 
            deriving (Show , Eq)

data Rank = R1|R2|R3
              deriving (Show, Eq)

data Card = Card Suit Rank
             deriving (Show, Eq)

instance Show Card where show (Card a b) 
     = show a ++ show (tail show b)

toCard :: String -> Maybe Card
toCard all@(x:xs)
        | (x=A|B|C|D|E|F)&&(xs==1|2|3) = Just Card
        | otherwise  = Nothing
Run Code Online (Sandbox Code Playgroud)

编辑toCard函数,输入应该是任何String,所以我使用了列表表达式,但是似乎不正确,因为我在ghci中尝试了它,(x = A | B | C | D | E | F)&&(y == 1 | …

haskell

-1
推荐指数
1
解决办法
130
查看次数

标签 统计

haskell ×3

filter ×1

filtering ×1

list ×1

predicate ×1