Wzór pasujący do identycznych wartości
Właśnie zastanawiałem się, czy możliwe jest wielokrotne dopasowanie do tych samych wartości za pomocą funkcji dopasowywania wzorców funkcjonalnych języków programowania (Haskell / F # / Caml).
Pomyśl tylko o następującym przykładzie:
plus a a = 2 * a
plus a b = a + b
Pierwszy wariant zostanie wywołany, gdy funkcja zostanie wywołana z dwiema podobnymi wartościami (które byłyby przechowywane wa
).
Bardziej użyteczna byłaby ta aplikacja (upraszczająca AST).
simplify (Add a a) = Mult 2 a
Ale Haskell odrzuca te kody i ostrzega mnie przedsprzeczne definicje dlaa
- Muszę zamiast tego wykonać jawne sprawdzenie / sprawdzanie, czy funkcja ma identyczne wartości. Czy jest jakaś sztuczka wskazująca, że zmienna, którą chcę dopasować, wystąpi wiele razy?