BETA

Haskell はじめての再帰

投稿日:2019-12-02
最終更新:2019-12-02

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)  
  1. calc 1 2が実行
  2. calc 3 3が実行
  3. print 6が実行

Java シンプルfor文って書くこと少なくなりましたね!!

int x = 0;  
for (int i=1; i<4; i++){  
    x += i;  
}  
System.out.print(x);  

やっぱりJavaは読みやすい! まだまだfor文から親離れできない感じです

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

だいたい急に挑戦してゴールにたどり着かずに飽きる日々です

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!