【发布时间】:2017-09-28 06:59:14
【问题描述】:
定义一个类型 LibraryItem 表示图书馆借给的项目 赞助人:期刊或书籍。期刊有目录号、标题和出版频率。发布频率是天数 或几个月。书籍有目录号, 标题,作者。只给一本书或期刊,返回它的标题和目录号。给定书籍和期刊的列表,返回标题和目录号的列表。
data Libraryitem = Book {cataloguenumber1 :: Int , title1 :: String , author :: String}| Periodical {cataloguenumber2 :: Int, title2 ::String , publicationfrequency :: Publicationfrequency} deriving (Show,Eq,Ord)
data Publicationfrequency = NumberofDays Int | NumberofMonths Int deriving (Show,Eq,Ord)
为了在给出书籍/期刊详细信息时返回标题,下面的代码正在运行
titleR (Book _ titleR _ ) = titleR
titleR (Periodical _ titleR _ ) = titleR
我有两个问题,
1)有没有其他方法可以使用我在定义数据类型时所做的 title1 分配返回单本书的书名和目录号?
2)我如何使用递归并为项目列表执行此操作
我的递归尝试如下
titlen1 [] = []
titlen1 (x:xs) = if x == (Book _ title1 _)
then title1 : title1 xs
虽然,我更喜欢使用我在定义中使用的 title1。我也知道此代码不足以执行任务。
【问题讨论】:
标签: haskell