Operatörlerde şablon eşlemesini yapmak istediğim bir durumla karşılaştım. Ancak, bu GHC ile Pattern match(es) are overlapped
hatasını atar. Nedenini anlayamıyorum. Operatörlerde şablon eşleşmesine izin verilmiyor mu? Bir operatör sembolünü converts it into an identifier parantez içine aldığından bu işe yaramış olmalıyım.Model Eşleşmeleri örtüşüyor - Operatörlerdeki şablon eşleşmesi
test :: (Integer -> Integer -> Integer) -> String
test (+) = "plus"
test (-) = "minus"
test _ = "other"
Yapmak istediklerimi gerçekleştirmenin başka yolları da var. Bunun neden işe yaramadığını merak ediyorum.
İlk hattınız herhangi bir işlevle eşleşir ve yerel olarak infix operatörüne + bağlar. Sonraki satırlar bu nedenle gereksinimlere ve dolayısıyla uyarıya ihtiyaç duyarlar. Fonksiyon simgelerinin, infix veya notlarının, bu şekilde desen eşleştirmesiyle yerel olarak geri alabileceğini unutmayın. Yalnızca büyük harfle yazılan kurucular (veya: - düzeltilmiş infix kurucuları) ve değişmezler yalnızca kendileriyle eşleşir ve daha sonra yalnızca birinci dereceden türler ile eşleşir. Haskell (hemen hemen) fonksiyonların yönelimli özelliklerini incelemek için hiçbir şekilde (neredeyse) hiçbir şekilde vermez: (sırayla) sadece onların genişleme özelliklerini kullanarak uygulayabilirsiniz. "Bu + işlevi mi?" izin verilmiyor. – pigworker
@pigworker, bu, 'bu bağlama neden mevcut başlangıç tanımı' mesajını aldığımı açıklıyor. bilgi için teşekkürler. –