list - 从类型列表haskell中删除类型

标签 list haskell types

所以我是 Haskell 的新手,我想知道是否有人可以帮助我。

我有一个自定义数据类型的列表,如下所示:

type Title = String
type Manager = String
type Year = Int
type Fan = String
type Album = (Title, Manager, Year, [Fan])

我有一个预制的专辑静态数据库

albumDatabase :: [Album]
albumDatabase = [(...)]

我有一个函数可以返回经理制作的所有相册:

manAlbum :: String -> [Album] -> [Album]
manAlbum d database = filter ((\(_,album,_,_) -> d == album)) database

我的问题是,从所有经理专辑的这个新列表中,我只需要检索粉丝并删除标题、经理和年份。但是我不确定如何告诉 haskell 我只希望返回自定义数据类型中的这个字段。

最佳答案

如 4caSTLe 所述,您可以使用 map:

getAlbumFans :: [Album] -> [[Fan]]
getAlbumFans database = map (\(_,_,_,fans) -> fans) database

您还可以通过给 manAlbum 函数一个更具描述性的名称,例如 getAlbumsByManager 并将类型签名中的 String 替换为经理

关于list - 从类型列表haskell中删除类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823762/

相关文章:

optimization - 优化 Haskell 内循环

haskell - VSCode 在附加模块的 Haskell 扩展中没有智能感知

types - Elixir:为map指定 `key_type`,其中 `key_type`是枚举类型

c# - 如果子类型是父类型

python - 如果一个变量有两种可能的结果,你如何分别从列表中添加值

python - 使用python映射到整数后如何防止前导零

list - Haskel - 列表 <*> 的实现

c# - 像 ForEach 一样使用 List<T>.RemoveAll 有什么缺点?

haskell - monad 运算符名称的继承

c++ - 为什么用short不好