Gov*_*mar 3 haskell set subset
假设我在Haskell中有以下数据结构来表示Checkers/Drafts部分:
data Piece = Reg {pos :: Square, color :: Color}
| King {pos :: Square, color :: Color}
deriving (Show, Eq)
Run Code Online (Sandbox Code Playgroud)
鉴于这些列表,Pieces我如何King从列表中隔离s?我一直在寻找的文档,Data.Set在http://www.haskell.org/ghc/docs/7.6.2/html/libraries/containers-0.5.0.0/Data-Set.html但无法找到的东西,对我来说似乎很明显
简而言之,我需要一个方法,给定一Data.Set组Piece,返回所有King类型片段的子集.我觉得这很简单,但我还没有遇到过因为我是Haskell中的Data.Set类的新手.
您可以定义一个布尔函数isKing,然后使用filterin Data.Set,如下所示:
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
Run Code Online (Sandbox Code Playgroud)