Haskellにはループがない
Haskellにはfor文、while文といったループがありません 「そうなんだ~」くらいにしか思ってなかったけど、改めてループ処理の目的を考えると 変数の状態を変化させることですよね!
JavaだとDBから取得したエンティティをループに入れて Beanクラスのプロパティにセットするコードをよく書きます それもループ処理の前に用意した「データリスト」変数にループでデータをaddしてるので 「データリスト」変数の状態がどんどん変わっていってます
Javaと違ってHaskellにはfinal変数しかありません(定数ですね) 宣言された変数は再代入できない → 状態が変わることがありません だからループ処理がありません
関数の再帰呼び出し
「1+2+3」のように「1+2」した結果に「+3」する計算は関数の再帰呼び出しで書きます
Haskell 初心者なので簡単なコードしか書けません。。。
calc :: Int -> Int -> Int calc x y = x + y main = print (calc (calc 1 2) 3)
calc 1 2
が実行calc 3 3
が実行print 6
が実行
Java シンプルfor文って書くこと少なくなりましたね!!
int x = 0; for (int i=1; i<4; i++){ x += i; } System.out.print(x);
やっぱりJavaは読みやすい! まだまだfor文から親離れできない感じです