したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

Haskell勉強スレッド

7(-_-)さん:2017/03/05(日) 03:48:08 ID:???0
Haskellは関数の呼び出しを重ねることでプログラムを実行する

引数を1つ取る関数 f があり、引数に 30 を与えるなら f 30 また、(f 30) や f (30) や (f (30)) と書ける (※他のプログラミング言語だと f(30) と書くところだがHaskellは違う)

Haskellの関数は一見すると2つ以上の引数を取るように見えるものがあるが実際はちょっと違う

g 20 99 という呼び出しがある場合は ((g 20) 99) という解釈で、(g 20) の戻り値が引数が1つの関数型でその関数に 99 という引数を渡すという感じである
他のプログラミング言語的な書き方にすると (g(20))(99) という感じ(分かりにくい)

例えばHaskellで g の宣言と定義が

g :: Int -> Int -> Int
g x y = x * y

とすると
宣言の g :: Int -> Int -> Int は g :: Int -> (Int -> Int) と解釈し、 g は Int型の引数1つ受け取ると (Int -> Int) の関数を返すという

掛け算の * も関数で、中置記法という書き方で、実際の関数名は丸括弧をつけた (*) となるので g はこうとも書ける
g :: Int -> Int -> Int
g x y = (*) x y

(g 20) は先にxの値だけ決めておいた関数という感じ


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板