Взгляните на заголовок функции:
terna <b>(x, y)</b> = ...
Это шаблон из двух кортежей, а не функции с двумя параметрами (обратите внимание, что, строго говоря, функции имеют один параметр, здесь мы, таким образом, создаем функцию с одним параметром, которая генерирует функцию, которая затем принимает другой параметр, но Haskell предоставляет более удобный синтаксис для этого).
В результате подписьваша функция:
terna :: <b>(Double, Double)</b> -> (Double, Double, Double)
terna (x, y) = (x, y, sqrt (x*x + y*y))
Но обычно в Haskell функции " curry ", поэтому имеет смысл написать это следующим образом:
terna :: <b>Double -> Double</b> -> (Double, Double, Double)
terna <b>x y</b> = (x, y, sqrt (x*x + y*y))