やっとコップ本読み終わった。
700ページというサイズに途中ダラダラ読んでしまったため、ほとんど内容が頭のなかに残ってない。長い本は1日100ページとか理解はどうでもいいからスピードを高めつつ読みたい(どうせ後でまた読みなおすので)。
とりあえず、覚えたのが
S
がT
のサブ型の時に、Container[S]
をContainer[T]
のサブ型とみなすのを共変S
がT
のサブ型の時に、Container[T]
をContainer[S]
のサブ型とみなすのを反変- ジェネリック型の形変位を認めないのが非変
これで、Element[+T]
って書いてあっても怖くない。やったね!
で、今日から読み始めた本がこれ。
僕は正規化の理論的な説明は第三正規形までしかできないけど、僕がやってしまうデータベースの論理設計はもっと正規化されているし、データベースからNULL
を撲滅するように設計するので、ちゃんとその考えが理論的に説明できるようになりたいので読み始めた。
とりあえず、最初の二章読んだところですが、記号論理学的な部分は最初きついような印象をもったけど、不完全性定理を証明しろとかまで出てこないので、まあ大体すんなり読めた。
ただ、ところどころ日本語がおかしかったり、指示語が曖昧なところがあって、そういう部分で30分くらい固まってしまうので、そっちの方がつらかった。
後、コップ本を読んだついでで、ScalaやHaskellに依存しない関数プログラミングという考え方を把握してみたい欲が出てきたので、Haskell成分を取り除くためにHaskellの(単純なレベルでの)理解を目指してHaskellをちょっと触ってみることにした。というわけで、この本も読んでみてる。
これは第二版ですが、僕が持っているのは初版…まあ、いいか。
それよりも、Haskellの環境構築すごくつらかったです。今日だけで4回も次のコマンド叩いて10分ボーっとしてました。
$ cabal install ghc-mod
で、結局、次の二つのエントリーを参考にしました。
MacにhaskellをインストールしてIntellijで使えるようにする | つかびーの技術日記
おわり