(x/y) 的型別有什么問題?
my :: (Integral a, Fractional b) => a -> a -> Maybe b
my x y
| y == 0 = Nothing
| otherwise = Just ( x / y )
uj5u.com熱心網友回復:
該(/) :: Fractional a => a -> a -> a要求兩個運算元和回傳型別都是一樣的。因此,這意味著您my應該寫為:
my :: (Eq a, Fractional a) => a -> a -> Maybe a
my _ 0 = Nothing
my x y = Just (x / y)
另一種選擇是使用(%) :: Integral a => a -> a -> Ratio aand fromRational :: Fractional a => Rational -> a:
import Data.Ratio((%))
my :: (Integral a, Fractional b) => a -> a -> Maybe b
my _ 0 = Nothing
my x y = Just (fromRational (fromIntegral x % fromIntegral y))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359159.html
標籤:哈斯克尔
下一篇:如何使用串列的內容輸出新的串列?
