【发布时间】:2016-04-20 08:18:05
【问题描述】:
你好 Stackoverflow 社区,代表我的另一个相当基本的问题:
大约五年前有人问过一个问题,即“从 Haskell 的列表中删除重复的元素”。我有类似的问题要问,虽然有一定程度的复杂性。
假设我有这些数据类型:
data Library = Library {borrower :: String, book :: [Book]}
data Book = Book {title :: String, barcode :: Integer}
然后说我有这个功能:
addBook :: Book -> Library -> Library
addBook book library = library {book = book : getBooks library}
其中 getBooks 只是一个从 Library 中提取 [Book] 的函数。
显然,只要 Ralph 不借书的副本,这个功能就可以了。然而,如果他这样做了,那么书籍列表中就会出现重复,这是不可取的。
我将如何编写一个返回当前 [Book] 的函数,但同时也删除任何重复项?我尝试了帖子开头提到的问题中的方法,但是编译器抱怨它特别想要 [Book] 而不是 [a]。
【问题讨论】:
-
使用
nub :: Eq a => [a] -> [a]怎么样?请注意,您需要提供(或派生)Eq实例。
标签: haskell