2015-12-08 106 views
1

錯誤:需要dayshoursmins哈斯克爾RealFrac錯誤

我明白,這個錯誤是因爲我改變類型的定義RealFrac Int的實例 - 沿着這些線路或某事 - 那它不匹配(RealFrac一,積分b)=> a - > b。我只是不知道如何解決它。錯誤發生在第2行。我嘗試使用fromIntegral,但是我可能會錯誤地使用它。

dayshoursmins :: Int -> (Int, Int, Int) 
dayshoursmins x = (days, hours, minutes) 
where 
    days = floor (x/(24 * 60)) 
    a = x - (days * (24 * 60)) 
    hours = floor (a/60) 
    b = a - (hours * 60) 
    minutes = b 

回答

2

/功能,如果小數的數字,並返回Fractional

> :t (/) 
(/) :: Fractional a => a -> a -> a 

如果你想使用整數除法,使用div函數:

dayshoursmins :: Int -> (Int, Int, Int) 
dayshoursmins x = (days, hours, minutes) 
    where 
     days = x `div` (24 * 60) 
     a = x - (days * (24 * 60)) 
     hours = a `div` 60 
     b = a - (hours * 60) 
     minutes = b 
+0

和整數除法做你的意思是'div'充當發言權功能以及 – 8673589

+0

是的。這也是我刪除「地板」的原因。 –