мне нужно создать телефонную книгу в виде списка кортежей:Haskell создать телефонную книгу в виде списка кортежей
type Phonebook :: [(String,String)]
Как вы можете видеть в коде, первый элемент должен представлять имя и второй элемент номер. Таким образом, результат
Main> phonebookone = insert "Dad" "90213" (insert "mum" "8912" emptyPhonebook)
Main> phonebookone
должен быть [("Dad","90213"),("mum","8912")]
, но я только получить [("Dad","90213")]
Мой код:
emptyPhonebook :: Phonebook
emptyPhonebook = [("","")]
insert :: String -> String -> Phonebook -> Phonebook
insert name number phonebook = [(name,number)]
Кроме того, мне нужно создать функцию search
, что поиск номеров или лучше, если первый элемент кортежа существует в списке и тот же, что и String, которого вы ищете, это приведет к второму элементу кортежа.
Так оно и должно быть:
Main> search "Dad" phonebook
"90213"
Мой незавершенной код для этого:
search :: String -> Phonebook -> String
search name phonebook = if ..???
Как бы то ни было, ваша 'insert' просто отбрасывает существующие записи. Вы ищете '(имя, номер): phonebook', а не просто' [(имя, номер)] ' – Michail
В вашей' emptPhonebook' есть запись. –
Если я правильно помню, вы уже третий, задающий связанные вопросы. См. Например [здесь] (http://stackoverflow.com/questions/41696230/haskell-phonebook-adding-elements?s=1|0.0000). –