Миранда выдает ошибку, я не понимаю
Я пытаюсь создать функцию, которая будет находить значение y строки при задании значения a x и строки. Я определил точку как пару чисел, а линию как пару точек, как показано. По большей части это работает, но в последней строке появляется сообщение об ошибке неопределенной функции. "неопределенная функция: q". Я не вижу причин, по которым Миранда могла подумать, что q должно быть функцией. Если я изменю q на p, возникнет такая же ошибка, и p будет правильно работать на две строки вверх.
Спасибо за любую помощь.
point == (num,num)
line == (point,point)
xcoord :: point -> num
xcoord (x,y) = x
ycoord :: point -> num
ycoord (x,y) = y
yvalue :: num -> line -> num
yvalue x (p,q) = ycoord p + (x - xcoord p)*slope
where
slope = (ycoord q - ycoord p)/(xcoord q - xcoord p)