我正在尝试为以下类型编写Enum实例:
-- Type declarations:
-- Octave
data Octave =
O1 | O2 | O3
deriving (Show, Read, Eq, Ord, Bounded, Enum)
-- Note
data Note =
A | B | C | D | E | F
deriving (Show, Read, Eq, Ord, Bounded, Enum)
-- Pitch
data Pitch = Pitch Octave Note
deriving (Show, Eq, Ord)
-- Why doesn't this work?
instance Enum Pitch where
fromEnum (Pitch o n) = (fromEnum o)*6 + (fromEnum n)
toEnum x = (Pitch o …Run Code Online (Sandbox Code Playgroud) 我想通过另一个列表中的谓词来过滤列表.例如:
multifilter :: (a -> a -> Bool) -> [a] -> [a] -> [a]
multifilter _ _ [] = []
multifilter _ [] _ = []
multifilter f (x:xs) ys = (filter (f x) ys) ++ (multifilter f xs ys)
Run Code Online (Sandbox Code Playgroud)
使用如下:
prelude> multifilter (==) [1,2,3] [5,3,2]
[2,3]
Run Code Online (Sandbox Code Playgroud)
有没有标准的方法来做到这一点?
haskell ×2