imzaların ben derleme yaparken aşağıdaki hata iletisini alabilirsiniz:Aşırı yükleme fonksiyonu haskell
Yinelenen tip imzası:
weightedMedian.hs: 71: 0-39: findVal :: [ValPair] -> Çift -> Çift
weightedMedian.hs: 68: 0-36: findVal :: [ValPair] -> Int -> Çift
Çözümümün findValI ve findValD sahip olmaktır. Ancak, findValI sadece Int türünü bir Double'e dönüştürür ve findValD öğesini çağırır.
Ayrıca ben Num (Int, Çift) türlerine değil desen maçı yüzden sadece ben farklı adlar gerek olmazdı Birçok dilde
findVal :: [ValPair] -> Num -> Double
tip imzasını değiştiremezsiniz olabilir. Haskell'de neden farklı isimlere ihtiyacım var? Bu dile eklemek zor olur muydu? Yoksa orada ejderha var mı?
fonksiyon imza kaldırmayı deneyin tip sınıfları ve sınıf örneklerini ilan içerir: findVal' otomatik olarak hesaplanır işlev imzayı görmek için t. Muhtemelen int ya da double'a sahip olmaz, bunun yerine 'num a => [valPair] -> a -> double' gibi bir şeye benzersiniz. –
@Anupam Jain: Aslında "gerçek" versiyon [ValPair] -> Double -> Double. Bunu yapmak için Augustss 'tekniğini kullanabilirim ve sonra listenin imzaladığı imzayla son bulurum. –