我有以下类型和数据库:
type Title = String
type Singer = [String]
type Year = Int
type Fan = String
type Fans = [Fan]
type Song = (Title, Signer, Year, Fans)
type Database = [Song]
songDatabase :: Database
songDatabase = [("Wrapped up", ["Olly Murs"], 2014, ["Garry", "Dave", "Zoe", "Kevin", "Emma"]),
("Someone Like you", ["Adele"], 2011, ["Bill", "Jo", "Garry", "Kevin", "Olga", "Liz"]),
("Drunk in Love", ["Beyonce", "Jay Z"], 2014, ["tom", "Lucy"])]
我想向列表中的最后一个元组添加一个风扇。我是通过使用addToAl还是通过其他方法使用的?
我是否需要搜索数据并将其删除,然后添加所需的数据?还是有一种方法,例如将“ John”添加到像您的元组这样的人的粉丝中。
您无法将元组添加到现有列表,Haskell中的所有值都是不可变的。相反,您可以构造一个包含所需值的新列表。最好的方法是首先编写一个可以在单个电影中添加风扇的函数:
addFan :: Fan -> Song -> Song
addFan fan (title, singer, year, fans) = ???
然后,您可以编写一个函数来更新数据库中的特定歌曲:
addFanInDB :: Fan -> Title -> Database -> Database
addFanInDB fan songTitle [] = []
addFanInDB fan songTitle (song:db) = ???
由于这看起来很像家庭作业,因此我不会为您提供完整的解决方案,因为这样做会违反任务的目的。您需要自己填写???
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句