元ネタは、ここです。
coursera で Programming Languages のコースを受講している。
Assignment でテストファイルが与えられるのだが、これをうまく実行する方法についてのメモ。
Preparation
- hw1.sml … 提出用ファイル
fun is_older(date1: int*int*int, date2: int*int*int) =
(* implementation *)
- hw1.sml … テストファイル
(* Test is_older *)
val test_is_older_1 = is_older((2012,1,1), (2012,1,1)) = false
val test_is_older_2 = is_older((2012,1,1), (2013,1,1)) = true
val test_is_older_3 = is_older((2013,1,1), (2013,2,1)) = true
val test_is_older_4 = is_older((2013,1,1), (2013,1,2)) = true
Execute
以下のコマンドで実行できる。
$ cat hw1.sml hw1_test.sml | sml
Standard ML of New Jersey v110.74 [built: Fri Dec 7 10:09:50 2012]
...
val is_older = fn : (int * int * int) * (int * int * int) -> bool
...
val test_is_older_1 = true : bool
val test_is_older_2 = true : bool
val test_is_older_3 = true : bool
val test_is_older_4 = true : bool
Emacs を私はつかっているので、=M-!= (shell-command)で、Emacs の中から実行。
grep
結果を以下のように grep するとなおよい。
$ cat hw1.sml hw1_test.sml | sml | grep false
まとめ
Lecture では、use “hw1.sml”; を利用して、ファイルを読み込むことを推奨しているけれども、 こっちのやり方のほうがフィードバックが素早く得られるのでよい。
いわゆる TDD ができる。