真面目なノート

こまめにその日の進捗などをメモしておく。

毎日アイスティーを飲んでいる

20160624

今日やりたいこと

  • 競プロ一問くらい
  • バイス間距離測定の先行研究調査
  • プログラム言語(講義)の準備

今日やったこと

競技プログラミング

グラフ問題 GRL_1_A

昨日解いた問題の、Haskellでの解答を読んだり、写経したりしてみた。
AOJはこれができるのがいいところ。

AIZU ONLINE JUDGE: Code Review

Bang Pattern とは

qiita.com

簡単に言うと、関数の引数の前に ! をつけることで、正格評価をできるようにするものらしい。

この人のコードは正格評価とかもしっかり考えて解いている(のでめちゃ速い)ということなので、もう少し単純なコードを参考にさせてもらうことにした。

AIZU ONLINE JUDGE: Code Review

アプリカティブスタイル

contents <- BS.lines <$> BS.getContents

この形で関数を作っていくことをアプリカティブスタイルという。
getContentsの結果をlinesにつっこんでいる。この操作についてはすごいHの11章、ファンクターとしてのI/0アクションという節で触れている。
I/Oはファンクター(足のついた箱、外の世界に行き、何かを取得し、純粋性のある世界に帰ってくるもの)であるので、これらを合成するためにはfmapなどを使う。

main = do fmap BS.lines BS.getContents

で、このfmapと等価であったり、その強化版であったりするものが以下の2つということになる。

<$> fmapと等価。
<*> fmapよりも強い。中身を取り出して計算をして、再び箱に入れて返す。

Maybeモナドについて考えると、以下の様な使い方で、以下の様な結果を返す。

pure (+) <*> Just 3 <*> Just 4 --- Just 7
(+) 3 <$> Just 4 --- Just 7

文脈を保ったまま計算が出来るかどうか、というのが<*>と<$>の大きな違いである。
この2つを組み合わせることで、関数同士の糊付けがよりスムーズに行えるようになる。

シグネチャ

型クラス - ウォークスルー Haskell

ここに書いてあるような型クラス制約がよくわかっていなかったので、勉強しなおした。

Haskellでコードを写経して見た感じと、Pythonで書いた時の感じの違いとしては、Haskellで書く場合はダイクストラ法自体のアルゴリズムを型パラメータ等を用いて抽象的に表してから、最後に標準入出力に対する動作を実装する、というような形にできるので、よりアルゴリズムの理解に良さそうだと感じた。

プログラム言語の講義の準備

A proposal for making Eiffel type-safe

この論文について発表しようと思うので、とりあえずまず、ざっとEiffelという言語の特徴についてさらっておきたい。

overview

two-minute fact sheet

契約プログラミング - Wikipedia

  • "single-product" model というものも使っている。
Your next project in Eiffel

なんかEiffelがいかに素晴らしいかみたいな内容なので、ここはちょっと飛ばす。

Common myths and misconceptions about Eiffel

Eiffelは実用的でない言語だと言われてるけど、そんなことあるわけないぜ!!
みたいな、内容らしいので、飛ばす。

続きは、明日!

論文の先行研究とか軽く調べる

上までの諸々で大きく時間を使い、ここはあまり真面目にできていない。(なので非常に精神によろしい。)

CHI2015, CHI2014, Ubicomp2015の論文をざっと眺めて、なにか役に立ちそうな論文はあるかを見ていた。 とりあえず、これが気になったので、Abstractだけ読んだ。

Human factors of speed-based exergame controllers

Exergameの分野で提案されているコントローラは、新しいコントローラやアプリケーションの分野を模索することに注力しているが、入力として人間の運動パフォーマンスや努力というものを考慮に入れる研究があまりなされていない。
本研究では、エアロバイクを漕ぐスピードの変化でキャラクターを操作するようにした。
このエアロバイクコントローラと、従来のコントローラの使用感を比較した。

明日以降、ゲーミフィケーション、Exergameの分野辺りで論文を調べると、いいものが見つかるかもしれない。

その他、休憩がてらやったこと

  • amazon englishとかいうのを始めた。

brian.hatenablog.jp