Ich bin frisch zu Haskell und ich versuche, die Sprache zu verstehen, indem Sie einen Code schreiben. Ich bin nur vertraut mit sehr einfachen Anweisungen auf ghci: Kopf, Schwanz, Summe, (*) und dergleichen - sehr einfach.Was hat Art "Constraint" bedeutet in Haskell
Die Funktion, die ich versuche, ist, Pythagoras 'Theorem für Vektoren einer beliebigen Anzahl von Dimensionen zu lösen. Das sieht ungefähr so aus: Quadratwurzel (a^2 + b^2 + c^2 ...)
Was ich in ghci in ein paar Zeilen machen kann, was ich versuche, eine Funktion zu machen, ist die folgende :
sq x = x*x
b = map sq [1,2,3]
a = sum b
x = sqrt b
wenn ich das tue ich versuche, eine Unterschrift von vielen Sorten enthalten, Derzeit sieht meine Funktion wie folgt aus:
mod :: [Num a] => a
mod x = sqrt a
where a = sum [b]
where [b] = map sq [x]
ich das Problem nicht verstehen, wenn ich es zu laufen versuchen:
Expected a constraint, but ‘[Num a]’ has kind ‘*’
• In the type signature:
Main.mod :: [Num a] => a
FTR: trotz des Namens, 'Floating' ist nicht wirklich„die Klasse von Gleitkommazahlen“, das wäre' RealFloat' (oder sogar ['IEEE'] (http://hackage.haskell.org/package/ieee754-0.7.9/docs/Numeric-IEE.html#t:IEEE)). Es ist eher einfach die Klasse von _Number-Typen, mit denen Sie einen Kalkül mit _ erstellen können, was auch Dinge wie exakte reelle Arithmetik erlaubt. – leftaroundabout
@leftaroundabout Vielen Dank für die Hervorhebung; ungenaue Aussage entfernt. – duplode