Я свежий для Haskell, и я пытаюсь понять язык, написав код. Я знаком с очень простыми инструкциями по ghci: head, tail, sum, (*) и т. П. - очень просто.Что имеет вид «Ограничение» в Haskell
Функция, которую я пытаюсь сделать, предназначена для решения теоремы Пифагора для векторов любого числа измерений. Это выглядит примерно так: квадратный корень (a^2 + b^2 + c^2 ...)
Что я могу сделать в ghci в нескольких строках, которые я пытаюсь сделать функцией, следующее :
sq x = x*x
b = map sq [1,2,3]
a = sum b
x = sqrt b
когда я делаю это я пытаюсь включить подпись многих видов, в настоящее время моя функция выглядит следующим образом:
mod :: [Num a] => a
mod x = sqrt a
where a = sum [b]
where [b] = map sq [x]
Я не понимаю этот вопрос, когда я пытаюсь запустить его:
Expected a constraint, but ‘[Num a]’ has kind ‘*’
• In the type signature:
Main.mod :: [Num a] => a
FTR: несмотря на название, 'Floating' это на самом деле не«класс чисел с плавающей точкой», которая была бы' RealFloat' (или даже ['IEEE'] (http://hackage.haskell.org/package/ieee754-0.7.9/docs/Numeric-IEEE.html#t:IEEE)). Это довольно просто класс типов _number, которые вы можете делать с помощью calculus with_, также позволяя использовать такие вещи, как точная реальная арифметика. – leftaroundabout
@leftaroundabout Спасибо, что выделили это; неточное заявление удалено. – duplode