手元のbrew環境にあるGHCを最新版へ念のためアップグレードしておく。→ghci起動に失敗する、と思ったらbrew環境が全体に古かったので丸ごとアップグレードした。このとき、コマンド実行でコケていたけれど単純にgmpのリンクが切れてるっぽかったのでunlinkしてlinkし直したところうまくいった(brewにありがちなこと)。/=演算子を2値が等しいかの判定に使っててふぁぁぁと思ったけど、これあれか、≠か。0で0をC的に真偽判定してFalseという例かと読んでから気付いた。関数が2引数のときは、関数を``で囲うことで中置関数として呼び出せる。これよく使われるのかな。関数の適用は優先度的に明確である限りは括弧無しで引数指定するようなので注意していく*2。文字列リテラル(というのかまだ知らない)をシングルクォートで囲うと、「TemplateHaskellを使おうとしたのん??」と問われるのでそのうち解消しよう(なんかモジュール要るやつをおせっかいしてくれるのかなGHCi)Haskellでのif式にはelse節が必須すべての関数は何らかの値を返す他の言語で、コードパスによっては値を返すけど他のコードパスでは返さないような、関数シグニチャと挙動の一致しない定義が許されないのと同様、Haskellのifは必ず値を返す式(文ではない)ゆえ、else必須とちょい先でシングルクォート(アポストロフィ)あたりの話が出てきた。Haskellで'は特別な意味を持たず、関数名の一部として有効な文字であると。正格版の関数というフレーズが出てきてなんぞとなったけれど、遅延じゃないと書いてあったのでそういうものだろう。'は他に、ちょい変更した関数の意で名前付けに使うこともあると。慣れないので見づらく感じるけれど、たぶん慣れてる人にとっては見れば分かるような使い分けなのだろう。前にやった覚えのある、Haskellの関数名は大文字で始められないよというところまで来た。引数を取らない関数を定義や名前と呼ぶと。関数呼び出し、関数定義と来て次はリストやタプルの話へ進もうというところで今回は時間切れ。function作成の話だった。今回は、インタフェースの継承と実装の継承を使い分けるべきという話。非virtualの使い分けとそれによって得られるものについて。virtualな関数宣言に加えてその実装を基底クラス側でおこなうこともできる。virtualな関数宣言+実装を基底クラス側でおこなっておき、継承クラス側では明示的にその実装を呼び出す策が使える終盤でざっくりとこれらの使い分けについて記載があった。全メンバーが非virtualなのはヤバそうなクラス設計の兆候。全メンバーがvirtualなのも同様。これは良い設計である場合もあるけど、単純にクラス設計者の考慮漏れという可能性もあるため、という締め。#32長くメモを書いていなかったので続き。前回はパブリック継承の話だった。今回は、継承した名前を隠すのは避ける(あるいはその状況とうまく付き合っていく)という話。継承の問題というよりはスコープの問題。内側のスコープで名前解決に成功した場合は外側での解決は一切おこなわないため、内側と外側で型が違っていようが何も考慮されない。ローカルスコープでの名前解決、次に外側としてクラス、次に基底クラスを調べたところで解決できたらそれを使うと。ここで見つからない場合はローカル側の所属する名前空間を見て、最後にはグローバル名前空間を見にいく。このルールはメソッドについても適用されるし、メソッドの場合はシグニチャベースではなくてメソッド名での名前解決がおこなわれるために継承クラスで基底クラスと同名別パラメータのメソッドを作っても基底クラスのメソッドが隠される結果になる。Base::foo;の構文での取り込みが必要。public継承の場合はこれでいいけれど、private継承が絡んでくると少々事情が異なる。function(プロキシ的なもの)を書くことになる。functionの導入は有効と書かれているけれど、さすがにその方面のコンパイラを触る気持ちは無いので見なかったことにする。テンプレートが絡むと事情が変わるということで、そのへんはまた今度(#43かな)。Learning)は、クラウドで動作する機械学習の仕組みです。MicrosoftのAzureサービス群のなかでも他の大手クラウドサービスになかなか無いものを提供している、個人的にかなり好きなサービスです(私自身は機械学習クラスタではありません)。MLやその他Microsoft関連の機械学習系トピック(新サービスの紹介など)が週に2本程度の頻度で書かれています。これは割と読んでいて面白いのでちょいちょい読んでいるのですが、すぐに忘れてしまってもったいないので振り返り用に簡単なメモを残してみます。Airlinesを使った時にはさほどエンタメシステムがパーソナライズされているようには思わなかったけれど、そりゃ初利用で最適化されてたら引くし。頻繁に飛んでる人用の最適化なんだろうオンプレとクラウドのデータ処理系をつなぎあわせて使うのに力を発揮するイメージ。MacBookを4/10に注文、4/14出荷、届いたのは4/17だったので正確にはもうすぐ2ヶ月ですが。Dockerで簡単にGPU対応のTensorFlow入りコンテナを作る方法こんにちは。作品群を読んでいたら連休が終わりそうです。重くなるので読み込まないようにすればOK。資料を補足するシリーズです。途中でやったことや、参考情報を書いていきます。