отсутствует сопроводительная привязка - Что это значит?Как это работает?
-
12-12-2019 - |
Вопрос
Я практикую от ЛЯХ.
Файл phoneBook.hs содержит следующий код:
телефонная книга ::[(Строка, Строка)]
При попытке скомпилировать вышеупомянутый код я получаю следующую ошибку:
*Main>: загрузить "/home/optimight/phonebook.hs" [1 из 1] Компиляция Main (/Home/optimight/phoneBook.hs, интерпретируется)
/home/optimight/phoneBook.hs:1:1:Тип подписи для «телефонной книги» не хватает сопровождающего переплета, не удалась, модули загружены:никто.
Вопрос добавлен после ответа Брано и последующего комментария к этому ответу:Как мы обеспечиваем реализацию вышеупомянутой подписи типа?
Если я добавлю это:
введите phoneBook = [(String, String)]
Я получаю следующую ошибку:
Prelude>: загрузить "/home/optimight/phonebook.hs" [1 из 1] Компилирование Main (/Home/optimight/phoneBook.hs, интерпретируется)
/home/optimight/phoneBook.hs:2:6:Неверный заголовок объявления типа или класса:Телефонная книга не удалась, модули загружены:никто
Решение
Вам нужно обеспечить реализацию для телефонной книги.
phoneBook :: [(String, String)]
- это просто подпись.
Другие советы
Если вы хотите объявить тип, он должен иметь начальный верхний регистр, т.е. type PhoneBook = [(String, String)]
.
Если вы хотите объявить функцию, вам необходимо предоставить либо только ее определение (привязку), либо ее определение и сигнатуру типа.Минимальные усилия для компиляции вашего кода:
phoneBook :: [(String, String)]
phoneBook = undefined
Тогда вы можете заменить undefined
с любым значением типа [(String, String)]
например [("Person","Number")]
.