[Haskell] Undefined Variable a

cruzero

Cadet 4th Year
Registriert
Okt. 2008
Beiträge
108
hallo,
ich bin in einem Haskell-Tutorial auf folgenden Beispielcode gestoßen, der die Ergebnisse einer quadratischen Gleichung ax^2+bx+c=0 ausgibt.

roots :: (Float, Float, Float) -> (Float, Float)
roots (a,b,c) = (x1, x2) where
x1 = e + sqrt d / (2 * a)
x2 = e - sqrt d / (2 * a)
d = b * b - 4 * a * c
e = - b / (2 * a)

wenn ich jetzt meine tut.hs bei winhugs lade, kommt die Fehlermedung :
Undefined variable "a"

Aber warum? ;) ich habe zwar gerade erst mit Haskell angefangen, aber steht da nicht relativ deutlich, dass es sich bei a um den ersten Eintrag im Triple handelt und es vom Typ float ist?
ich hoffe ihr könnt mir helfen.
Gruß
 
Hallo!

Der Code sollte OK sein.
Bist Du Dir aber sicher, dass Du bei den letzten 4 Zeilen die nötigen Leerzeichen-Einrückungen (jeweils zu Beginn jeder der Zeile) nicht vergessen hast?
Sprich, beispielsweise so:

Code:
roots :: (Float, Float, Float) -> (Float, Float)
roots (a,b,c) = (x1, x2) where
                 x1 = e + sqrt d / (2 * a)
                 x2 = e - sqrt d / (2 * a)
                 d = b * b - 4 * a * c
                 e = - b / (2 * a)

Grüße

PS:
Es ist nämlich so, dass die Zeilen nach der "where" Klausel noch zu dieser gehören und eigentlich in der gleichen Zeile stehen "müssten". Damit der Code aber durchschaubar bleibt, kann man sie auch in die nachfolgenden Zeilen packen, die aber eingerückt werden müssen, damit der Haskell-Interpreter (Hugs o.ä.) weiß, dass diese noch zu der letzten weniger eingerückten Zeile gehören.
Hoffe das hilft Dir weiter und weiterhin viel Spaß/Erfolg mit Haskell!
 
Zuletzt bearbeitet:

Ähnliche Themen

U
Antworten
16
Aufrufe
3.186
U
Antworten
3
Aufrufe
1.364
M
Zurück
Oben