0

我正在gcd为分配重写函数,但是当我尝试隐藏gcd时,如下所示:

import Prelude hiding ((gcd))

我得到错误

输入'gcd' 上的解析错误。

我确定我已经完成了 的重新定义gcd,但我无法阻止错误

模棱两可的出现,它可以指“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)

错误

4

1 回答 1

6

如果你想从一个模块中隐藏多个东西,你需要将它导入一次并指定要隐藏的所有内容。导入它两次将导致每一行的排除使另一行无效。所以改为这样做:

import Prelude hiding ((||), gcd)

(正如前面在评论中提到的,gcdis 不是一个运算符,所以它不应该像它那样有括号||。)

于 2021-04-18T23:02:26.403 回答