所以我有一个自定义数据类型Person
记录中更新一个值,记录的集合哈斯克尔
data Person = Person{ fname :: String
, lname :: String
, age :: Int
, siblings :: [String]
}
我有这种类型的列表中,foo = [Person].
我想更新一个特定的Person
。我的过程是匹配它们的fname
(假设每个名称都是唯一的),然后更新它们的siblings
值。
addSiblingToPerson :: String -> String -> [Person] -> [Person]
addSiblingToPerson siblingParam fnameParam fooParam =
我真的很努力想“功能”,如果我这样做是命令式语言,我可以去通过每个项目[Person]
检查,看看if name == fname then this.siblings push newSibling
(或者类似的规定)
我知道如何更新haskell中的记录,但是我想在更新Person
集合中的单个人之后返回Person
的列表。
我只是不能换我围绕如何头“认为哈斯克尔”
谢谢:(
发现令人兴奋的[镜头]世界(https://hackage.haskell.org/package/lens)。 – arrowd