2010-12-01 8 views
1

私は問題があり、それが何であるかを知ることができません。何度も何度もやり直してきましたが、解決策を見つけることができません。これに依存することができる他に何かありますか?ハスケル、取り除くことができない可能性のあるインデントエラー

コード:

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に相当する "正しさ::トリプル - >ブール"):

crypt.hs:94:0: parse error (possibly incorrect indentation) 

編集:私は、問題を解決しました。上記の関数で構文エラーが発生しました。私が持っていたotherwise m_ify m*2代わりのotherwise = m_ify m*2

+2

さらにコードを提供できますか?ずいぶん前に起こった間違いのようです。 – fuz

+0

FWIW、「おそらく間違った字下げ」と言うだけで、字下げの問題ではありません。一部の解析エラーがインデントエラーになる可能性があるという事実に注目するだけです。不平を言っている行を囲む数行で構文をダブルチェックしてください。 – luqui

+0

luquiのコメントをフォローアップするには、94行目の前にすべての括弧を閉じていることを確認してください。 –

答えて

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レイアウト

1

WORKSFORME、右型エラーにジャンプします。

はライン92

type Triple = (Prime, Quot, Gen) 

行されますが、どこか別の場所から移動することにしましたか?実際に発生する場所よりも後でエラーが発生することがあります。私は92行目(恐らく近く)の上のカッコが一致していないかチェックします。

場合によっては、見えないユニコード文字が私のコードに潜入しているようです。再タイピングが時折働いています。

+0

いいえ、それ以上になった –

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) 

(離れて最初の5行から)ここでの唯一の変更は、最後の行です。

+0

私はバックティックを見逃しました。私はGHCがこれほど遠くに来なかったと思います。ありがとう。 –

関連する問題