gpt4 book ai didi

Haskell:根据成员类型设置过滤器?

转载 作者:行者123 更新时间:2023-12-01 16:22:27 25 4
gpt4 key购买 nike

假设我在 Haskell 中有以下数据结构来表示跳棋/草稿:<​​/p>

data Piece = Reg {pos :: Square, color :: Color}
| King {pos :: Square, color :: Color}
deriving (Show, Eq)

给定这些棋子的列表,我如何从列表中分离出K?我一直在查看 Data.Set 的文档 http://www.haskell.org/ghc/docs/7.6.2/html/libraries/containers-0.5.0.0/Data-Set.html但找不到对我来说似乎显而易见的东西。

简而言之,我需要一种方法,在给定 Data.SetPiece 的情况下,返回所有 King 类型的子集件。我觉得这是非常简单的事情,但我还没有遇到过,因为我是 Haskell 中的 Data.Set 类的新手。

最佳答案

您可以定义一个 bool 函数isKing,然后在Data.Set中使用filter,如下:

import Data.Set as S
data Color = Int deriving (Show, Eq)
data Square = Square (Int,Int) deriving (Show, Eq)
data Piece = Reg {pos :: Square, color :: Color}
| King {pos :: Square, color :: Color}
deriving (Show, Eq)

isKing King{} = True
isKing _ = False

getKings s = S.filter isKing s

关于Haskell:根据成员类型设置过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26477735/

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