Когда вы вводите первое предложение определения sum
и нажимаете Enter, GHCI предполагает, что вы закончили, и должен оценить программу. Программа
sum [] = 0
не указывает, что делать, если аргумент не пуст, поэтому вы получаете ошибку «неполные шаблоны».
GHCI имеет :{
и :}
команды, позволяющие вам вводить несколько предложений (или другой код, охватывающий несколько строк:
Prelude> :{
Prelude| sum [] = 0
Prelude| sum (n:ns) = n + sum ns
Prelude| :}
Prelude> sum []
0
Prelude>
В общем, я бы рекомендовал сохранить определения, с которыми вы работаете, в файл и загрузить этот файл в GHCI . Затем вы можете :reload
, когда внесете некоторые изменения и вызовете свою функцию / ы с различными аргументами, чтобы посмотреть, что произойдет.