Tôi đã viết một chức năng trong Haskell mất ba điểm trên mặt phẳng, và kiểm tra xem chúng có đang chạy thẳng hay rẽ phải hay trái.Chức năng Haskell không chấm dứt
Here's mã:
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
Tôi đã thử nghiệm collinear1
, angle
, turnAtP
trong GHCi, và tất cả đều chấm dứt ngay lập tức. Tuy nhiên, detDirection
vẫn tiếp tục chạy mãi mãi.
Ai đó có thể cho tôi biết sự cố ở đây là ở đâu?
Đã thử bước qua từng dòng một? –
Bật cảnh báo trên (': set -Wall' trong GHCi) và bạn sẽ nhận được một số chỉ dẫn rõ ràng về những gì bạn đã làm sai. – ephemient