我在Haskell中编写的程序有一个我定义类型的列表实例:
type Locals = [(String, Float)]
我试图通过接收字符串并更新相应的浮点值来更新此列表,但当时字符串可能不在列表中。
由于Haskell列表是不可变的,我决定最简单的方法是执行此操作(在伪代码中):
if a tuple containing the string exists:
delete it
add the correct data
我想知道:
a)如果有更简单的方法可以做到这一点
b)如果没有,我将如何删除正确的元素
由于
答案 0 :(得分:5)
这看起来像一个关联地图。我会用Data.Map
。这在其他语言中被称为“字典”。 Map.insert
可以满足您的需求。
答案 1 :(得分:3)
似乎最好的方法是做
filter (\x -> fst x /= s) xs
无论如何,不需要任何帮助。
答案 2 :(得分:1)
答案 3 :(得分:0)
我是Haskell的新手。只是为了好玩。
func xs str value = (str, value) : foldr step [] xs where
step x acc
| fst x == str = acc
| otherwise = x:acc