2018年01月07日のツイート

【関数型言語】Haskell のテストツール

stack を使ってプロジェクトを作成すると、それだけで test ディレクトリが作成され、stack test するとテストが実行できる。いったい何をどうテストしているのか?

stack new hello

stack build

stack test

 また、haskell で使えるテストツールとして

  • HSpec
  • HUnit
  • QuickCheck

HSpec は BDD なツール、HUnit はユニットテスト用、QuickCheck はテストデータ・テストケースまで自動生成してくれるらしい(@_@)

これから使い方を調べて使ってみる予定。

インストールの仕方だが、stack の設定ファイル1行追加するだけでよいらしい。

hajimete-program.com

記事通りに、hello.cabel の buld-depends に hspec の1行を追加し、

build-depends:

    base >=4.7 && <5

,   hspec

 stack test を実行したところ、いろいろ必要なものを自動的にダウンロードし、自動的にテストの実行まで無事に完了した。ダウンロード中のメッセージから、HUnit と QuickCheck もちゃんとダウンロードされていることを確認できた。

 とりあえず、下記の記事を真似て、動かしてみる。

qiita.com

stack index

2018年01月06日のツイート

【関数型言語】処理速度とメモリ使用量

処理速度

qiita.com

超大作。途中に各言語のベンチマークがある。

メモリ使用量

個人的には、「データが全て不変(immutable)って、無茶無茶メモリを食うんじゃ?!」と思ったので、実際のところどうなのか知りたかった。

だが。

関数型言語に関する記述・データが見つからない。

参考

atmarksharp.v01.jp

関数型言語でもJavapython などと同様に、データが不要になったらガベージコレクションされる」というのはわかった。ただ、前述のように、「変数を変更するたびに新しい変数を作る」ことが、ほかの言語と比較してどのくらいメモリを使うのか、しりたいところだ。

2018年01月05日のツイート

【関数型言語】使いどころ

関数型言語の勉強中。関数型言語とはどういうものかを理解するのに四苦八苦。命令型言語と比べてどんな特徴があるのかと言う観点で学んでいる。しかし、本当に知りたいのは、どういう場合に関数型言語使うべきかということ。

ナップサック問題、サラリーマン巡回問題など、グラフ理論を使った開放では漸化式が出てくる。このような場合、関数型言語だとすっきり実装することが、できそう。

【関数型言語】使いどころ

関数型言語の勉強中。関数型言語とはどういうものかを理解するのに四苦八苦。命令型言語と比べてどんな特徴があるのかと言う観点で学んでいる。しかし、本当に知りたいのは、どういう場合に関数型言語使うべきかということ。

ナップサック問題、サラリーマン巡回問題など、グラフ理論を使った開放では漸化式が出てくる。このような場合、関数型言語だとすっきり実装することが、できそう。