【发布时间】:2017-11-04 22:31:59
【问题描述】:
我正在尝试编写一个函数,该函数接受Artists 列表和Genre 字符串作为参数,并输出具有该类型的所有Artists。我已经定义了数据类型Artist如下:
data Artist = Artist Name Genres
deriving Show
type Name = String
type Genres = [Genre]
type Genre = String
我实现该功能的代码如下:
getFilteredArtists :: [Artist] -> Genre -> [Artist]
getFilteredArtists xs genre = filter (genre) (map getGenres xs)
下面是一个示例函数调用:
artists = [
Artist "Grimes" ["Electropop", "Dream Pop", "Synthpop"],
Artist "My Bloody Valentine" ["Shoegaze", "Noise Pop", "Post Punk"],
Artist "David Bowie" ["Art Rock", "Pop Rock", "Glam Rock", "New Wave"]
]
getFilteredArtists artists "Art Rock"
应该返回[Artist "David Bowie" ["Art Rock", "Pop Rock", "Glam Rock", "New Wave"]
但是,我的函数正在输出类型匹配错误,我不确定原因。非常感谢任何帮助!
【问题讨论】: