プログラミング勉強ログ

プログラミングの勉強記録

2014-07-27から1日間の記事一覧

Yet Another Haskell 3章 (7)

3.7 Recursion 再帰に関してC言語などでは、for文を使ったループをよく使う。 しかし、for文では破壊的変更を伴うため、Haskellでは使われない。代わりに再帰を使う。例えば、C言語で階乗を計算する関数は次のように書ける。 int factorial(int n) { int fac…

Yet Another Haskell 3章 (6)

3.6 Commentsコメントは--と{- -}で書ける。 C言語等の、//と/**/にそれぞれ対応。簡単。

Yet Another Haskell 3章 (5.2)

3.5.2 Infix インフィックスに関して(+), (*), (++)等の記号の関数は、インフィックス関数と呼ばれる。 これらは()で包むことで、通常の関数と同じように使える。 Prelude> 5 + 10 15 Prelude> (+) 5 10 15 foldlの例で(+)と書いていたのはこれが理由ですね…

Yet Another Haskell 3章 (5.1)

3.5.1 Let Bindingslet bindingに関して 今までの知識を使うと、2次方程式の根を求める関数rootsは次のように書ける。 roots a b c = ((-b + sqrt(b*b - 4*a*c)) / (2*a), (-b - sqrt(b*b - 4*a*c)) / (2*a)) let inを使うことで、関数内でのみ参照できるロ…

Yet Another Haskell 3章 (5)

3.5 Functions 関数に関して関数の定義 関数の定義は、関数名 引数 = 式 の形で書く。 例えば、ある数を2乗する関数は次のように書ける。 square x = x * x if then else 条件分岐はif then elseを使って書ける。 例えば、 signum x = if x < 0 then -1 else…

Yet Another Haskell 3章 (4)

3.4 Source Code Files プログラムの実行に関して Test.hsという名前のファイルを用意し、以下を記述する。 module Test where x = 5y = (6, "Hello")z = x * fst y これでプログラムができる。 module TestのTestの部分は、ファイル名と同じにした方が良い…

Yet Another Haskell 3章 (3.2)

3.3.2 Simple List Functions 代表的なリスト操作関数について Haskellプログラムの殆どはリストの操作である。 3つのプリミティブなリスト処理関数がmap, filter, foldr(とfoldl)である。 map mapはリストのそれぞれの要素に対して、与えた関数を適用し、そ…