l_n_m’s diary

よわい電気系の日記(本当にただの日記)

Ocaml続き

タイトル変えました

末尾再帰大事。でも「末尾再帰の重要性!」なんてタイトルだとガチ勢の人に怒られそうなので、無難なタイトルに変更。

寝る

寝ましょう。人は寝るものです。寝ないと効率は落ちるしロクな事がありません。
だからといって夕方に寝てしまうと夜寝られなくなります。
また寝落ちしてしまった……明日こそはちゃんと起きていよう。

健康診断

アンケート適当に答えたり血圧測ったり(116-64)胸部レントゲン検査したり。
3週間後に結果が分かると言われても、忘れてしまいそうです。

Ocaml続き

モジュールを少し使ったり、stack overflowさせたり。

Printf.printf "hello, world! float : %f int : %d\n" 3.0 5;;
let l = Unix.gettimeofday();;
let rec random_ints max n =
  Random.int max :: random_ints max (n - 1);;
let long_random_int_list = random_ints 10000000 1000000;;

このコードで、random_intsのnが20万ちょっとくらいでstack overflowしてしまいました。
もうちょっと上手く、再帰を避けて書けばなんとかなるのかな……末尾再帰とかそういうのをこれまで意識していなかったので、ちょっと考えさせられました。

あと、以下のコードで変なエラー。型がおかしいと怒られた。

let measure n =
  let t0 = Unix.gettimeofday() in
  (* let v = これを書き忘れたら2行下でエラー *) hogehoge n in
  let t1 = Unix.gettimeofday() in
  if v then Printf.printf "OK %d elements in %f sec" n (t1 -. t0)
  else Printf.printf "NG";;

関数hogehogeに引数nを渡して実行時間のテストをするコードです。確かにlet無しだとinの意味がよくわかりません。うっかり「これの返り値は使わないから」とletを書かないでいると、違うところでエラー吐いて混乱してしまうので気をつけたい。

追記4/22 let無しだとただの比較文になります。

タスク

は特に無いのですが。やりたいこと、やっておくといいこと、くらいのことが山のようにあるので片付けたい。そのためにも夕方しっかり行動したい。そのためにはまずちゃんとした睡眠を。
ゲームも進めたいし、本も読みたいし、論文も探しておきたいし。なんだか、充実した大学生ライフって感じがしてきました! 嬉しい。
同じように本来なら自由なはずだった2年夏はサークルに食い潰されてしまったので、この4年次でやっとこんな素敵な思いが出来て泣きそうです。
でもエンジョイばかりしていると教授に怒られそうなので、ちょっと気が抜けないですけどね。

ゆびぷら

たまには音ゲーのことも書こうかな、って思って。
今週はチャレンジで隅田川夏恋歌を早々に引けたので、めっちゃ粘着してます。3難易度総合で週間1位取れるかも……? 上手い人がADVとかBSCとかやらないからなんですけどね(
ずっと昔から大好きな隅田川夏恋歌! いつか恋人が出来たら隅田川花火大会行きたいなって思ってます。ええ今は独り身ですとも! ええ!