Haskellに惑わされ – 3

今回サーチして見つけたのがこのサイトでした なかなか簡潔に Haskellのイロハが記載されて助かりました このサイトではまったのが次のプログラム

letTest1 x = let a = 3
                 f v = v + 2
             in do a * f x

これを例えば letTest1.hsとしてファイル・セーブするのです そしてghciを立ち上げて compileすれば、letTest1という関数が認識されるので、ここで例えば

*Main>letTest1 2

と打ち込めば、この場合には 12という計算結果が戻ります しかし最初はこれがどうして 12になるのか全く分かりませんでした そもそも let文の中にある f v = v + 2 という式はどう解釈するのか? という問題です 色々と考えた結果、fは内部関数名、vは内部引数名であることに気づきました

従って、letTest1 2という命令を出せば、その定義で、2という実引数は xという引数に相当するので、最後の文である in do a * f xという文の中の xが 2に置換され、fという内部関数が実行されます その結果、内部的に f  = 2 + 2となりf という関数の戻り値は 4となります そして aは 3なので letTest1の結果は、3 * 4で 12となります

ここまで自分で自分に説明してようやく理解できました

投稿者: (KAMAKURA & SAPPORO)Dr_Radialist

Expert Interventional Cardiologist and Amateur Computer Programmer

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です