作者:黑天天 | 来源:互联网 | 2022-11-11 11:15
通过较早的考试,我复制了这段代码,并试图使其正常工作。
rems :: Integer -> [(Integer ,Integer )]
rems n = [(i, n `mod` i) | i <- [2 ..(n?1)]]
现在使用类型声明或不使用类型声明,都会出现错误:
Variable not in scope: (?) :: Integer -> Integer -> Integer
ghc version 8.6.3
我能够通过在where子句中计算n-1来解决此问题,但并没有真正弄清为什么这是解决方法。我当然知道Haskell中的Integer。
rems n = [(i, n `mod` i) | i <- [2 ..j] ]
where j = n-1
有人可以向我解释为什么这种看似无效的变化不能解决错误,还有其他方法吗?
1> bradrn..:
这是一个简单的印刷错误。您?
不是连字符(Haskell期望),它是Unicode减号字符,这是不同的。您的来源必须已自动将前者转换为后者。只需将其替换为连字符(使用键盘输入)即可。