Trong chương trình Haskell này, @@
là toán tử kết xuất mà tôi muốn xác định chỉ cục bộ trong phần chức năng f
. (Đương nhiên đủ, chương trình thực tế của tôi là phức tạp hơn này, và có một lý do chính đáng để sử dụng ký hiệu ghi vào.)Định nghĩa toán tử cục bộ trong Haskell
infixl 5 @@
(@@) = undefined
f x = x @@ 5 where x @@ y = (x+1) * (y+1)
main = print (f 7)
Tuy nhiên, trừ khi tôi cũng làm cho các định nghĩa toàn cầu, được viết ở đây là (@@) = undefined
, GHC phàn nàn rằng 'Chữ ký cố định cho @@
thiếu ràng buộc kèm theo'. Có cách nào để làm tròn điều này mà không có định nghĩa toàn cầu về ký hiệu toán tử không?
là 'bạn infixl 5 @@' thực sự đang được áp dụng cho các địa phương '(@@)'? Bởi vì đó phải là một lỗi tôi sẽ nghĩ rằng – jberryman
có vẻ như nó không phải là – jberryman