2012-02-06 10 views
0

それを修復する方法はありますか?私はそれらを外部でも使うことができますか? ありがとうございます。動作しませんこと、それらが定義されていたら、あなたはブランチ内部の割り当てを行うことを期待しているので、もし、彼らは、彼らの値を変更することはありません:あなたはHaskellで変数を誤解しているifブロック内の変数は、Haskellのブロック外では使用できません。何が原因ですか?

if(x==1) 
    then 
     someList<-aFunction (1,2) 
    else 
     someList<-aFunction (3,4) 


steps involving someList here 
+3

スコープが原因ですが、コードに応じて実行できることはいくつかありますか? –

+0

私はコードを書いていますが、別のxのためにすべてをifブロックの中に入れるよりも選択肢がありません。ありがとう – n00b

+0

@ダニエルフィッシャーShiDoiSiの答えは実際に私の問題を解決しました:-) – n00b

答えて

4

: 私はこのような何かを持っています。しかし、多分以下ができます:あなたは別のリマインダー:-)やっていることを知っている限り

let x = if (cond) then .. else .. in f x 

がされたif-then-elseでxを読むことがないように注意してください:あなたはこのような構成の内部で別のlet x = ..を使用する場合、外側のxを「シャドー」するので、効果的に異なる新しい変数になります。この特定のケースで

+0

それは範囲の問題であり、再定義するものではありません。 – ivanm

+0

@ ShhiDoiSiこれは実際に私の問題を解決しました、ありがとう:-) – n00b

8

someList <- aFunction (if x == 1 then (1,2) else (3,4)) 

はそれを解決するだろう。 if ... then ... else ...はHaskellの式であることに注意してください。

関連する問題