Haskell电话簿添加元素

时间:2017-01-17 11:42:39

标签: function haskell insert

他们,

我的任务是在Haskell中编写电话簿。因此给出了电话簿类型。电话簿将名称(字符串)映射到其电话号码(字符串)。但是现在我在实现'insert'函数时遇到了问题:

下面是代码:

type Phonebook = String -> String

emptyPhonebook :: Phonebook
emptyPhonebook  = \_->""

insert :: String -> String -> Phonebook -> Phonebook
insert name number emptyPhonebook = (\name->number)     --is this correct?
insert name number existingPhonebook = ??

我的问题:如何在函数中插入函数?我的意思是现在我必须在另一个函数(现有的电话簿)中插入一个由函数(name - > number)组成的条目,或者我错了吗?谢谢你帮助我:))

1 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

type Phonebook = String -> String

emptyPhonebook :: Phonebook
emptyPhonebook _ = ""

insert :: String -> String -> Phonebook -> Phonebook
insert name number phonebook = 
        case phonebook name of 
             "" -> (\s -> if s == name then number else phonebook s)
             _ -> phonebook