Haskell'de, uçağın üç noktasını alan ve düz bir çizgide olup olmadığını veya sağa veya sola dönüş yaptığını kontrol eden bir işlev yazdım.Haskell işlevi sonlandırmıyor
Here's kodu:
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
hep şeffaf GHCi içinde collinear1
, angle
, turnAtP
test edilmiş ve hepsinin hemen sona erer. Ancak, detDirection
, sonsuza dek çalışmaya devam ediyor.
Birisi bana burada sorunun nerede olduğunu söyleyebilir mi?
Çizgi boyunca adım atmaya çalıştı mı? –
Uyarıları açın (': GHCi'de -Wall'i ayarlayın) ve yanlış yaptığınız konusunda bazı açık ifadeler alırsınız. – ephemient