如何向 haskell 中的列表中的元组添加元素?
How to add an element to a tuple in a list in haskell?
我有以下类型和数据库:-
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" 添加到 someone like you 元组中的粉丝。
您不能将元组添加到现有列表中,Haskell 中的所有值都是不可变的。相反,您可以构造一个包含所需值的新列表。最好的实现方式是先写一个可以给单片加粉丝的函数:
addFan :: Fan -> Song -> Song
addFan fan (title, singer, year, fans) = ???
然后你可以写一个函数来更新数据库中的特定歌曲:
addFanInDB :: Fan -> Title -> Database -> Database
addFanInDB fan songTitle [] = []
addFanInDB fan songTitle (song:db) = ???
由于这看起来很像家庭作业,因此我不会为您提供完整的解决方案,因为这违背了作业的目的。您需要自己填写 ???
。
我有以下类型和数据库:-
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" 添加到 someone like you 元组中的粉丝。
您不能将元组添加到现有列表中,Haskell 中的所有值都是不可变的。相反,您可以构造一个包含所需值的新列表。最好的实现方式是先写一个可以给单片加粉丝的函数:
addFan :: Fan -> Song -> Song
addFan fan (title, singer, year, fans) = ???
然后你可以写一个函数来更新数据库中的特定歌曲:
addFanInDB :: Fan -> Title -> Database -> Database
addFanInDB fan songTitle [] = []
addFanInDB fan songTitle (song:db) = ???
由于这看起来很像家庭作业,因此我不会为您提供完整的解决方案,因为这违背了作业的目的。您需要自己填写 ???
。