Ho scritto una funzione in Haskell che prende tre punti nell'aereo, e controlla se sono su una linea retta, o svoltiamo a destra oa sinistra.La funzione Haskell non termina
Here's codice:
detDirection :: Point -> Point -> Point -> Direction
detDirection [email protected](Point (x1, y1)) [email protected](Point (x2, y2)) c
= if (collinear1 a b c)
then Straight
else let
ab = Vector [x2 - x1, y2 - y1]
angleAbX = angle ab (Vector [1, 0])
(Point (x1, y1)) = turnAtP a b angleAbX
(Point (x2, y2)) = turnAtP a c angleAbX
in if (y1 > y2)
then Right
else Left
Ive testato collinear1
, angle
, turnAtP
in GHCi, e tutti terminano immediatamente. detDirection
, tuttavia, continua a funzionare per sempre.
Qualcuno può dirmi dove si trova il problema?
Provato a percorrerlo linea per linea? –
Attiva gli avvertimenti (': set -Wall' in GHCi) e otterrai indicazioni chiare su ciò che hai sbagliato. – ephemient