Tôi chỉ tự hỏi liệu có thể khớp với các giá trị giống nhau nhiều lần với cơ sở khớp mẫu của ngôn ngữ lập trình hàm (Haskell/F #/Caml) hay không.Mẫu phù hợp với các giá trị giống hệt nhau
Chỉ cần nghĩ đến ví dụ sau:
plus a a = 2 * a
plus a b = a + b
Các biến thể đầu tiên sẽ được gọi khi hàm được gọi với hai giá trị tương tự (mà sẽ được lưu trữ trong a
).
Ứng dụng hữu ích hơn sẽ là điều này (đơn giản hóa AST).
simplify (Add a a) = Mult 2 a
Nhưng Haskell bác bỏ các mã và cảnh báo tôi về định nghĩa mâu thuẫn cho a
- Tôi phải làm trường hợp rõ ràng/if-kiểm tra thay vì để tìm hiểu xem chức năng có giá trị giống nhau. Có bất kỳ mẹo nào để chỉ ra rằng một biến tôi muốn đối sánh với sẽ xảy ra nhiều lần không?
FWIW, Mathematica hỗ trợ điều này. –