İşlevsel programlama dillerinin (Haskell/F #/Caml) desen eşleme özellikleriyle aynı değerlerle aynı değerlerle eşleşmenin mümkün olup olmadığını merak ettim.Eşleşen özdeş değerler
sadece aşağıdaki örnekte düşünmek: fonksiyonu (a
saklanabilir olacaktır), iki benzer değerler Çalıştırıldığında
plus a a = 2 * a
plus a b = a + b
birinci varyant olarak isimlendirilirler. Bu daha kullanışlı bir uygulama (AST'nin basitleştirilmesi) olacaktır.
simplify (Add a a) = Mult 2 a
Ama Haskell bu kodları reddeder ve a
için çelişen tanımların beni uyarıyor - Ben fonksiyonu aynı değerleri var olup olmadığını öğrenmek için yerine açık durumda/if-çek yapmak zorundayız. Karşılaşmak istediğim bir değişkenin birden çok kez ortaya çıkacağını gösteren herhangi bir hile var mı?
FWIW, Mathematica bunu desteklemektedir. –