Неполные шаблоны в функции Haskell, которая выводит список кортежей - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь научить себя Haskell. Я создаю модуль, который будет обрабатывать записи оценок учащихся. Для начала я хочу, чтобы функция принимала два списка (имена учеников и оценки) и превращала их в список кортежей [(Имя, Оценка)]

У меня есть это:

module StudentGrades (
    enterGrades
) where

    enterGrades :: [String] -> [Double] -> [(String,Double)]
    enterGrades [] [] = []
    enterGrades [[names]] [grades] = zip [[names]] [grades] 

Он прекрасно компилируется, но когда я пытаюсь запустить функцию, набрав enterGrades ["Ann", "Dan"] [3, 4], выдает ошибку:

*StudentGrades> enterGrades ["Ann", "Dan"] [3, 4]
*** Exception: question4.hs:(11,5)-(12,59): Non-exhaustive patterns in function enterGrades

*StudentGrades>

В то же время, ввод zip ["Ann", "Dan"] [3, 4] в терминале Prelude работает нормально и возвращает [("Ann",3),("Dan",4)]

Я не понимаю, почему. Пожалуйста помоги! Спасибо.

1 Ответ

0 голосов
/ 10 марта 2020

Спасибо, Робин (и все остальные)! Я изменил последнюю строку на enterGrades names grades = zip names grades, и теперь она работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...