免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3166 | 回复: 2
打印 上一主题 下一主题

大家好,请教一个有关类型的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-21 17:10 |只看该作者 |倒序浏览
  1. {-This  is a program demostrates the calculating of the fraction
  2. progamming by Haskell
  3. -}

  4. qsort ::  Ord a=>  [a] -> [a]
  5. qsort [] = []
  6. qsort (x:xs)  = qsort larger ++ [x] ++ qsort smaller
  7.                  where
  8.                           smaller =[ a|a <- xs,a<=x]
  9.                           larger  = [ a| a <- xs ,a>x]
  10. type Fraction = (Int,Int )
  11. maxGYS ::   Int -> Int -> Int  --求最大公约数
  12. maxGYS  m n
  13.                      | m<n   =head [x | x <- qsort [1..m],m`mod` x==0, n`mod` x==0]
  14.                      | m == n   =m
  15.                      | otherwise  =head [ x| x <- qsort[1..n] , m`mod` x==0, n`mod` x==0]
  16. --maxGYS  a  b   
  17.                      
  18. minGBS  ::  Int -> Int -> Int   -- 求两个数的最小公倍数
  19. minGBS  a  b
  20.                       | a==b     =a
  21.                       | a/=b     =head[ x | x <- [a,2*a .. a*b] , x `mod` a ==0 , x `mod` b ==0     ]

  22. --simplify  :: Int -> Int -> Fraction             --约分函数
  23. simplify  a b  = if a == b then (1 , 1)  else  ( a / (maxGYS a b ) ,  b/ (maxGYS a b ) )
  24. --simplify  a b  =  ( a / (maxGYS a b )  ,  b / (maxGYS a b ) )
  25.                     
  26. ratplus :: Fraction ->Fraction ->Fraction   -- the plus calc
  27. ratplus (a,b) (c,d)
  28.                         | b==d      = (a+c, b)
  29.                         | b /= d     = (  a+(minGBS b  d) /a+c+(minGBS b d)  /c  ,minGBS b d )

  30. --ratfloat :: Fraction -> Float   -- convert to floating numbers
  31. --ratfloat  (a,b) = (a :: Float ) / (b :: Float)
  32.                                                                        
复制代码

winhugs下的出错信息是ERROR file:.\lab1.hs:25 - Instance of Fractional Int required for definition of simplify
也就是simplify函数的问题,请问应该怎么改呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2009-03-21 18:44 |只看该作者
也许换成 `div` 就好了。/ 的类型不是 Int。

论坛徽章:
0
3 [报告]
发表于 2009-03-21 22:46 |只看该作者
原帖由 flw 于 2009-3-21 18:44 发表
也许换成 `div` 就好了。/ 的类型不是 Int。

谢谢,可以了:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP