Chinaunix
标题:
大家好,请教一个有关类型的问题
[打印本页]
作者:
sysabod
时间:
2009-03-21 17:10
标题:
大家好,请教一个有关类型的问题
{-This is a program demostrates the calculating of the fraction
progamming by Haskell
-}
qsort :: Ord a=> [a] -> [a]
qsort [] = []
qsort (x:xs) = qsort larger ++ [x] ++ qsort smaller
where
smaller =[ a|a <- xs,a<=x]
larger = [ a| a <- xs ,a>x]
type Fraction = (Int,Int )
maxGYS :: Int -> Int -> Int --求最大公约数
maxGYS m n
| m<n =head [x | x <- qsort [1..m],m`mod` x==0, n`mod` x==0]
| m == n =m
| otherwise =head [ x| x <- qsort[1..n] , m`mod` x==0, n`mod` x==0]
--maxGYS a b
minGBS :: Int -> Int -> Int -- 求两个数的最小公倍数
minGBS a b
| a==b =a
| a/=b =head[ x | x <- [a,2*a .. a*b] , x `mod` a ==0 , x `mod` b ==0 ]
--simplify :: Int -> Int -> Fraction --约分函数
simplify a b = if a == b then (1 , 1) else ( a / (maxGYS a b ) , b/ (maxGYS a b ) )
--simplify a b = ( a / (maxGYS a b ) , b / (maxGYS a b ) )
ratplus :: Fraction ->Fraction ->Fraction -- the plus calc
ratplus (a,b) (c,d)
| b==d = (a+c, b)
| b /= d = ( a+(minGBS b d) /a+c+(minGBS b d) /c ,minGBS b d )
--ratfloat :: Fraction -> Float -- convert to floating numbers
--ratfloat (a,b) = (a :: Float ) / (b :: Float)
复制代码
winhugs下的出错信息是
ERROR file:.\lab1.hs:25 - Instance of Fractional Int required for definition of simplify
也就是simplify函数的问题,请问应该怎么改呢?
作者:
flw
时间:
2009-03-21 18:44
也许换成 `div` 就好了。/ 的类型不是 Int。
作者:
sysabod
时间:
2009-03-21 22:46
原帖由
flw
于 2009-3-21 18:44 发表
也许换成 `div` 就好了。/ 的类型不是 Int。
谢谢,可以了:wink:
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2