有没有办法隐藏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 不是运算符,因此它不应该像 || 那样用括号括起来。)