10000hの技術メモ

この先生きのこるための勉強内容&時間記録

Haskell入門 1.4 〜 2.3

Haskell入門 関数型プログラミング言語の基礎と実践

Haskell入門 関数型プログラミング言語の基礎と実践

1.4 プロジェクト作成とビルド

stackでプロジェクトを作成してビルドする。

$ stack new [project name]
  • stack.yaml・・・ビルド情報を記載するファイル
  • projectname.cabal、Seup.hs、LICENSE・・・Cabal形式のパッケージの管理

cabalって何?

本書の該当章には書いてなかったものの、Cabalとは。

RubyでいうGemのようなパッケージシステムとのこと。

参照:Haskellのパッケージシステム (Cabal) | Netsphere Laboratories

ビルド

$ stack build

これで実行ファイルprojectname-exeが作られるはずだが、ディレクトリ内を探しても見つからず。ところが

$ stack exec projectname-exe

を実行すると、期待通りの動作をした。

サンプルコードには含まれていないが、単体テストをする場合は

$ stack test

第2章 基本の文法

2.1 文法の特色

手続き型言語ではコンピュータへの指示を文として上から順に並べて書くのに対し、関数型言語では細かな式をたくさん定義してそれらを組み合わせてプログラムを構築します。

2.2 基本のデータ型

> 値 :: 型

文字と文字列は明確に区別。 シングルクオートは文字でChar型、ダブルクオートは文字列でString型。

> :t 値

で値の型を表示する。

show関数を使うと、色々な値を文字列にできる。

I/Oアクション

I/Oアクションは IO a型で表す。(aは型変数)。 例えばputStrLnの返り値はIO ()型で、Unit型の()を返しつつ画面にprintする。

ボトム

式の評価が正しく終わらないことを、ボトムといいます。

たとえば

  • undefined
  • error

といった式。

2.3 変数

Haskellでは=によって示した変数に対応するデータを後から変更できません。変更のできない変数のことを、一般的にイミュータブル(immutable)であると言います。

変数を宣言してその内容を決めるkとおを、Haskellでは変数(binding)と言います。

  • whlere
  • let ~ in ~ 式 ← OCamlでとても使ったやつ

今回の勉強時間 45分

累計勉強時間 19時間58分