Trong chapter 4 của Erik Meijer trên nguyên tắc cơ bản lập trình chức năng, ông chủ yếu viết:tự xác định boolean kết hợp
True &&& x | x == True = True
| x == False = False
Đó không phải là không cần thiết verbose? Không thể tôi chỉ cần viết:
True &&& x = x
hoặc thậm chí:
(&&&) True = id
(&&&) False = const False
Bằng cách này, làm thế nào mà tôi không thể viết như sau?
(True &&&) = id
(False &&&) = const False
ghci phản ứng với:
Parse error in pattern: True &&&
N.B. Tôi nghĩ bạn * có thể * viết nó như là '(&&)' trong một khuôn mẫu. Vì vậy, '(&&) True = id' có thể hoạt động. –
Có, nhưng (&&) không phải là một phần, nhưng hình thức tiền tố của một nhà điều hành infix, tôi nghĩ. –
@Erik Hesselink có, nhưng không có sự khác biệt ngữ nghĩa giữa "toán tử tiền tố" và "phần hai mặt". Ngôn ngữ chỉ cho phép một cú pháp khi xác định toán tử và không phải cú pháp kia. – Carl