假設我正在編寫一個函數,它接受一個整數列表,並且只返回列表中小於5.2的整數。我可能會這樣做:Haskell:在Double類型上約束函數只能用於整數
belowThreshold = filter (< 5.2)
很簡單吧?但是現在我想限制這個函數只能用於我自己設計理由的輸入列表[Int]。這似乎是一個合理的要求。唉,不。一種限制類型的聲明如下:
belowThreshold :: [Integer] -> [Integer]
belowThreshold = filter (< 5.2)
導致類型錯誤。那麼這裏有什麼故事?爲什麼做過濾器(< 5.2)似乎將我的輸入列表轉換爲雙精度?我怎樣才能使這個函數的版本只接受整數列表並只返回整數列表?爲什麼類型系統恨我?
任何理由不'濾波器(<= 5)'?對於整數,這是完全相同的。 – 2010-03-14 16:36:18