Haskell
参照透明性参照透明性とは、計算機言語の概念の一種である。コンテキストに左右されることなく、 式の値はその構成要素である変数や関数によってのみ定まることを参照透明性*1があるという。 具体的には、変数の値は最初に定義した値と常に同じであり、 関数…
基本的な値と、その周辺の関数真偽値Haskellno真偽値はTrueかFalseのみ。その型はBool型。 関連関数として、not関数、(&&)関数、(||)関数などがある。 Prelude> not True False Prelude> (&&) True False False Prelude> not True && False False Prelude> F…
モジュールとimport宣言Haskellプログラムはモジュールという単位に分割されている。 モジュールは関数や変数や型の集まりであり、 Haskellでは関数や変数は必ずなんらかのモジュールに属している。 他のモジュールで定義されている関数などを使いたい場合は…
遅延評価Haskellの大きな特徴として、遅延評価を基本原則としているというのがある。 遅延評価とは、評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わないことを言う。 つまり、遅延評価はトヨタ式の、必要なときに必要なものを…
concat関数 {-concat関数の型-} concat :: [[a]] -> [a] main = do cs <- getContents putStr $ expand cs expand :: String -> String expand cs = concat $ map expandTab cs expandTab :: Char -> String expandTab c = if c == '\t' then " " else [c] c…
静的型チェックHaskellにも、Javaや.NETと同じように静的な型チェック(static type checking)がある。 「静的な」というのは、「コンパイル時に」と同じ意味であるから、 Haskellの場合もコンパイル時に、処理系が型のチェックを行ってくれる。 このようにコ…
高階関数(higher order function)高階関数とは、プログラミング言語において、関数を引数としたり、 あるいは関数を戻り値とするような関数のことである。 関数型プログラミング言語Haskellにおいては、まず「関数」という値があり、 関数名はそれに束縛され…
「ふつける」やら「ふつハス」の愛称で親しまれている「ふつうのHaskellプログラミング」を買いました。 というわけで、関数型プログラミングHaskellのお勉強をのんびりはじめます。 はじめてのHaskellはじめての言語の勉強と言えば、 まずはお約束という感…