我遇到了问题,无法找出它是什么。我一遍又一遍地重新缩进,但找不到解决方案。还有其他可以依赖的东西吗?
代码:
type Triple = (Prime, Quot, Gen)
correctness :: Triple -> Bool
correctness (p,q,g) = prime && pLength && qLength && divisor && orderq
where prime = probablyPrime n 5
qLength = q < 2^1024
pLength = p < 2^160
divisor = (p-1 `mod` q) == 0
orderq = (g^q mod p == 1) && (g > 1)
错误消息(第94行对应于“correctness :: Triple - &gt; Bool”):
crypt.hs:94:0: parse error (possibly incorrect indentation)
编辑:我解决了这个问题。问题是上述函数中的语法错误。我有otherwise m_ify m*2
而不是otherwise = m_ify m*2
答案 0 :(得分:1)
Worksforme,直接跳转到类型错误。
第92行是
type Triple = (Prime, Quot, Gen)
行,还是你从其他地方移动了?有时,错误可能会显示行号,而不是实际发生的位置。我会检查第92行(可能在附近)上方不匹配的括号。
在某些情况下,一个看不见的unicode角色似乎潜入我的代码。重新打字偶尔会奏效。
答案 1 :(得分:1)
您可能只需要在最后一行的mod
周围添加反引号。这不会导致您报告的缩进错误,但以下内容为我编译:
n = undefined
probablyPrime = undefined
type Prime = Int
type Quot = Int
type Gen = Int
type Triple = (Prime, Quot, Gen)
correctness :: Triple -> Bool
correctness (p,q,g) = prime && pLength && qLength && divisor && orderq
where prime = probablyPrime n 5
qLength = q < 2^1024
pLength = p < 2^160
divisor = (p-1 `mod` q) == 0
orderq = (g^q `mod` p == 1) && (g > 1)
这里唯一的变化(除了前五行)是在最后一行。
答案 2 :(得分:0)
尝试:
type Triple = (Prime, Quot, Gen)
correctness :: Triple -> Bool
correctness (p,q,g) = prime && pLength && qLength && divisor && orderq
where
prime = probablyPrime n 5
qLength = q < 2^1024
pLength = p < 2^160
divisor = (p-1 `mod` q) == 0
orderq = (g^q mod p == 1) && (g > 1)
阅读 - http://www.haskell.org/onlinereport/syntax-iso.html - 9.3布局