「where」と「let .. int」文の違いはほとんどありません。 ここに私のコードです。私は2通りの方法が5IOでlet .. in文が動作しないのですか?
main = do
print x
where x = 5
let x = 5 in print x
第1の動作印刷したいが、私は「『せ』の入力でエラーを解析し、」取得 これはインデントの問題であり、または私のコードは単純に間違っているのですか?
「where」と「let .. int」文の違いはほとんどありません。 ここに私のコードです。私は2通りの方法が5IOでlet .. in文が動作しないのですか?
main = do
print x
where x = 5
let x = 5 in print x
第1の動作印刷したいが、私は「『せ』の入力でエラーを解析し、」取得 これはインデントの問題であり、または私のコードは単純に間違っているのですか?
where
は常に文を終了します。 where
の後には何もしないでください。 だから、あなたはこのようにそれを書くことができます:where
句は、それが属する文を終了し、これが有効である
main = do
let x = 5 in print x
print x
where x = 5
。パーサーはwhere x = 5
の後に何も見つからないと予想していたので、あなたのコードは無効でしたが、let
節が見つかりました。
コードが間違っています。 where
句は、定義の最後になければなりません。let
は、式が有効な場所であればどこでも発生する可能性のある式です。
声明とは何ですか?とにかく、 "どこで'が不正確なのかは分からない。例えば、{()=()}}の 'do {case(){() - > return(); return()} 'は完全に有効です。Haskell(明快にするために完全にブレースされたセミコロン)。 –