小编dos*_*dos的帖子

Haskell枚举

我正在尝试为以下类型编写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)

haskell

8
推荐指数
2
解决办法
615
查看次数

Haskell multifilter

我想通过另一个列表中的谓词来过滤列表.例如:

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

4
推荐指数
2
解决办法
164
查看次数

标签 统计

haskell ×2