2017-06-24 3 views
-1

私はhaskelを初めて使っています。このようなことをやっているのは良いことでしょうか?シンプルなチェックインhaskell

var1 = //can be true or false 
if(var1==true) 
{ 
    //return someething 
} 
else 
{ 
// 
} 
+4

これは、Haskellの仕組みではありません... Haskellは機能的で宣言的な言語です。 –

+0

'do something'ではなく' return something'を意味しますか? – Mephy

+0

ええと、var1が真か偽かをチェックしてそれに応じて必要な処理をしたいだけです。 –

答えて

6

Haskellは機能宣言型言語です。つまり、普通はが「あまりない」です。 がさらにあります。何かを計算してに返してください。

つべこべのように見えるかもしれませんが、例えばHaskellのいずれかで二回を変数 を設定することはできません

:あなたはそれを表現(ないそれ自体は値) を割り当てたら、あなたは異なるにそれを設定することはできません値。

何かを返す場合は、通常はパターンマッチングで作業します。例えば:

f :: Bool -> String 
f True = "Yes" 
f False = "No" 

これは、Java/C#の/ ...にしてやや同等次のようになります。あなたが関数呼び出しを返す場合:Haskellは同様怠惰を動作することを

public String f (boolean var1) { 
    if(var1) { 
     return "Yes"; 
    } else { 
     return "No"; 
    } 
} 

注意ではなく、はすぐにその関数呼び出しを評価します。呼び出しが必要な場合にのみ評価されます。

I/Oを行う方法が問題になることがあります。そのためには、I/O monadという概念があります。モナドは、特定の評価順序を強制する関数型プログラミング手法です。

しかし関数型プログラミングは、このように命令型プログラミングとは異なる「考え方」が必要:あなたは一緒に次々と行われていコマンドの面でプログラムを考えるが、より多くの構成機能の面ではありません与えられた入力に対する出力を生成する。通常、数学者や物理学者のように。例えば、何かの質量と速度を与えて、そのオブジェクトの運動エネルギーを計算する関数を作成します。

3

ハスケルにはif-then-else条件があります。

私は書くことができます、あなたに最も近いコードはこのようなものである:そのような条件がif()...声明よりもCやJavaのvar ? "ok" : "no"表現に、より似ていますが、これはHaskellのため、予想されることを

let var = length "hello" == 5 
in if var then "ok" else "no" 

注意機能的なので、 "文"はなく、式だけはありません。

ハスケルのチュートリアルでこれをカバーする必要があります。あなたがハスケルを学びたいなら、あなたは1つを読むことをお勧めします。イディオムを他の言語から変換しようとするのは、貧弱な戦略です。

関連する問題