Haskell

12月26日/27日の学び

プログラミングHaskellのほうが断然わかりやすい。すごしずつHaskellの文法が見えてきた感じ。 用語整理 型 型とはお互いに関連する値の集合 Haskellではすべての式は型を持つ Bool型もChar型もInt型も全てお互いに関連する値の集合 リスト型もタプル型も全…

12月22日(型コンストラクタ)

値コンストラクタと型コンストラクタの違いがよくわからない。どちらも新しい型を返すのは共通で、何を引数にとるのかが異なるのか? 型コンストラクタ:型を引数にとって新しい型を返す

12月12日の学び

データ型の定義 新しいデータ型Shapeの作成は以下の通り 等号"="の後ろの部分を値コンストラクタと呼ぶ 値コンストラクタはフィールドを引数にとってデータ型を返す関数 Prelude> data Shape = Circle Float Float Float | Rectangle Float Float Float Floa…

12月9日&10日の学び

最近Haskellばかり書いているな。。 メモ 述語とは真理値を返す関数 map関数 関数とリストを受け取り、その関数をリストの全要素に適用して新しいリストを生成する。 Prelude> map (+3) [1, 5, 3, 1, 6] [4,8,6,4,9] Prelude> map (map (^2)) [[1, 2], [3, 4…

12月7日の学び

カリー化の例としては、以下のような『2つ引数をとるmaxを以下のように定義しなおす』ことがわかりやすい。 # 引数を1つわたすと、その次の引数を1つ受け取る関数を返す function _max(x){ return function(y){ return x > y ? x : y; } }

12月6日の学び

型(データ型)と型クラス 両者は別の概念 型クラスのインスタンスが型(データ型) Javaで例えるなら「型のSuperクラスが型クラス」というイメージ 数の型クラスである'Numクラス'のインスタンスが'Int' 'Integer' 'Float' 'Double' Prelude> :t 20 20 :: N…

12月4日の学び

ファイルの読み書きは直感的にできる ファイルの書き込み Prelude> writeFile "test.txt" "Hello, Haskell!" ファイルの読み込み Prelude> let str = readFile "test.txt" Prelude> str "Hello, Haskell!" Prelude> :t str str :: IO String

12月3日の学び

式と文に明確な定義があるのかは不明だが、少なくとも「式は値を持つ」が「文は値を持たない」と思う。 式の型の確認 :t で型を確認できる :: の記号は「〜の型を持つ」と読む Prelude> :t 'a' 'a' :: Char 関数headは「任意の型のリストを引数に取り、その…

12月1日の学び(Haskell)

Haskell関連の用語整理 Stack Haskellのパッケージ管理やビルドを実行 パッケージ管理においては下のcabal-installの差し替えとして機能 ビルド実行においてはCabalをバックエンドで利用 動作としてはJavaのMavenに近い? Cabal ビルドシステム cabal-instal…