有没有办法隐藏gcd?
Is there a way to hide gcd?
我正在为一个赋值重写 gcd
函数,但是当我试图隐藏 gcd
时,就像这样:
import Prelude hiding ((gcd))
我收到错误
Parse error on input'gcd'.
我确定我已经完成了gcd
的重新定义,但是我无法阻止错误
Ambiguous occurrence, it could refer to 'Prelude.gcd'
除非我设法隐藏 gcd
。
这是我的完整代码(抱歉找不到上传文件):
import Prelude hiding ((||))
import Prelude hiding ((gcd))
gcd :: Int -> Int -> Int
gcd x y
| x == y = x
| x < y = gcd x (y-x)
| otherwise = gcd (x-y) y
这是我更改为 import Prelude hiding (gcd)
后的错误:
如果你想从一个模块中隐藏多个东西,你需要导入一次并指定要隐藏的所有东西。导入它两次将导致每一行的排除项使另一行无效。所以改为这样做:
import Prelude hiding ((||), gcd)
(正如前面评论中提到的,gcd
不是运算符,因此它不应该像 ||
那样用括号括起来。)
我正在为一个赋值重写 gcd
函数,但是当我试图隐藏 gcd
时,就像这样:
import Prelude hiding ((gcd))
我收到错误
Parse error on input'gcd'.
我确定我已经完成了gcd
的重新定义,但是我无法阻止错误
Ambiguous occurrence, it could refer to 'Prelude.gcd'
除非我设法隐藏 gcd
。
这是我的完整代码(抱歉找不到上传文件):
import Prelude hiding ((||))
import Prelude hiding ((gcd))
gcd :: Int -> Int -> Int
gcd x y
| x == y = x
| x < y = gcd x (y-x)
| otherwise = gcd (x-y) y
这是我更改为 import Prelude hiding (gcd)
后的错误:
如果你想从一个模块中隐藏多个东西,你需要导入一次并指定要隐藏的所有东西。导入它两次将导致每一行的排除项使另一行无效。所以改为这样做:
import Prelude hiding ((||), gcd)
(正如前面评论中提到的,gcd
不是运算符,因此它不应该像 ||
那样用括号括起来。)