Tôi chỉ mới bắt đầu giảng dạy bản thân mình Haskell. Mã này được cho là để làm yếu tố chính:Haskell - xác định một chức năng với bảo vệ bên trong một 'nơi'
divides :: Integer -> Integer -> Bool
divides small big = (big `mod` small == 0)
lowestDivisor :: Integer -> Integer
lowestDivisor n = lowestDivisorHelper 2 n
where lowestDivisorHelper m n
| (m `divides` n) = m -- these should belong to lowestDivisorHelper
| otherwise = lowestDivisorHelper (m+1) n
primeFactors :: Integer -> [Integer]
primeFactors 1 = []
primeFactors n
| n < 1 = error "Must be positive"
| otherwise = let m = lowestDivisor n
in m:primeFactors (n/m)
Tôi nhận được lỗi phân tích cú pháp trên dòng nhận xét. Tôi nghĩ rằng vấn đề của tôi có thể là lowestDivisorHelper
có bảo vệ, nhưng trình biên dịch không biết liệu các vệ sĩ có thuộc về lowestDivisorHelper
hoặc lowestDivisor
. Làm thế nào để tôi có được điều này?
Chỉnh sửa: Tôi nên thêm rằng tôi không muốn xác định hàm trợ giúp ở cấp cao nhất để ẩn chi tiết triển khai. Việc nhập tệp không được thực hiện chức năng trợ giúp.
"Nhập tệp không được thực hiện chức năng trợ giúp." Trong trường hợp này, chỉ cần không xuất nó. –