Khi làm việc với các góc theo độ, tôi muốn xác định biểu tượng độ (°
) để được sử dụng làm toán tử postfix. Hiện nay, tôi sử dụng dòng này (trong GHCi):Làm cách nào để xác định toán tử postfix trong Haskell?
let o = pi/180
và sử dụng nó như thế này:
tan(11*o)
nhưng tôi muốn chỉ cần đi:
tan 11°
đó là rõ ràng hơn nhiều. Toán tử độ phải có mức ưu tiên cao hơn ‘tan
’ và các chức năng khác.
Gần nhất tôi nhận được là:
let (°) x _ = x*pi/180
sử dụng như thế này:
tan(11°0)
nhưng ưu tiên mặc định có nghĩa là dấu ngoặc vẫn là cần thiết, và với số giả, thay thế này là tệ hơn những gì tôi hiện đang sử dụng.
"Toán tử độ phải có mức ưu tiên cao hơn' tan' và các hàm khác. " <- Điều đó sẽ không hoạt động, ứng dụng chức năng có ưu tiên cao nhất theo đặc tả ngôn ngữ. –
Tại sao bạn không chỉ định nghĩa một kiểu số mới (gói Đôi hoặc bất kỳ thứ gì) với một kiểu mới đại diện cho độ? Tất nhiên bạn sẽ phải chú ý đến bản chất "mô-đun" của độ nếu bạn muốn xác định sự bình đẳng, v.v. –
Haskell không phải là loại ngôn ngữ mà bạn có thể thực hiện mọi thứ biên dịch theo cách bạn đang sử dụng để viết nó. Không giống như Perl hoặc thậm chí Python, cú pháp của Haskell thực sự được cắt xén và đơn giản, nó chỉ được thiết kế rất tốt mà ngay cả cơ sở đơn giản này cũng cho phép rất nhiều thứ viết tắt rất hiệu quả. để mọi thứ trở nên dễ đọc. Nhưng điểm thứ hai là một phần vì có những quy tắc phân tích cú pháp khá cứng nhắc này. – leftaroundabout