このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

2016-05-01から1ヶ月間の記事一覧

これではダメだ

Standard MLは、標準のパッケージマネージャもインターネット上のモジュールアーカイブサイトも持ってない(モジュールアーカイブとパッケージマネージャ - 檜山正幸のキマイラ飼育記 メモ編)。プログラミング言語にとって、ライブラリやツールは、言語仕様…

モジュールアーカイブとパッケージマネージャ

http://www.modulecounts.com/ でモジュール数が調べられる。CPAN, npm, CRAN, PyPI, Rubygems.org とか。PearやMELPAは少なすぎるだろう、正確な数が出てないようだ。RustのCrates.ioはまだ少ない。Hackageはソコソコ。CPANは停滞でもはや勢いはない。圧倒…

PolyML

$ git clone https://github.com/polyml/polyml.git polyml-githubでソースも入れた。ビルドはGNU Autotoolsだ。configure; make 方式ね。とりあえずconfigureしたが、なんか色々やったようだが、よくワカラン。PolyML.slnがあったので、startさせると Visua…

Standard ML:はじめに

Isabelle2016をインストールしたら、PolyMLが付いていた、つうか、PolyMLはIsabelleの実装言語。PolyMLはStandard MLの実装。PolyMLのFAQ http://www.polyml.org/FAQ.html によると、IsabelleとPolyMLの歴史はほぼ一緒らしい。https://en.wikipedia.org/wiki…

ストリング図とケリー/マックレーン・グラフ

String diagrams for traced and compact categories are oriented 1-cobordisms David I. Spivak, Patrick Schultz http://arxiv.org/pdf/1508.01069v2.pdf 52p P.3の上の絵右側を90度回転すると、 A relationship between trees and Kelly-Mac Lane graphs…

平面代数、ストリング図、ケリー/マックレーン・グラフ

この話題については、コボルディズム、TQFT、オペラッドとか - 檜山正幸のキマイラ飼育記 メモ編にまとめてある。上記の記事と、ルビンの壺と意味論 - 檜山正幸のキマイラ飼育記 メモ編から参照していたジョーンズ(Vaughan Jones)のスライドがドメイン(qq…

シーケンス圏→スパイダー圏

対称とは限らないモノイド圏Cから自然に厳密モノイド圏が出来て、それから多圏が作れるのだが、中間の厳密モノイド圏をシーケンス圏 Seq(C) と呼んでいた。対象の構成法はシーケンスだが、射の構成法を見るとスパイダーなので、Cのスパイダー圏 Spid(C) とし…

渋谷郵便局

地図

インターフェースの仮想デストラクタ

C++では、Javaのような言語仕様としてのインターフェースはない。だけど、純粋仮想関数を並べればインターフェースの代用になる。代用になるのだが、インターフェースは言語仕様ではなくて手法なので、落とし穴がある。インターフェースのつもりのクラスに仮…

とりあえずの比較

名前 Globular Quantomatic FQL IDE 形態 Webアプリケーション デスクトップ デスクトップ 実装言語 JavaScript ML + Scala Java 記述言語 なし なし 4種類あり エンジン分離 不可 可能 不可 データ交換 バイナリ JSON ソースコード 背景理論 グレイ圏 対称…

未使用な引数を警告させない

これで、-Wall -Wextra でも警告が出ない。 #define UNUSED_VAR(x) (void)x; int main(int argc, char *argv[]) { UNUSED_VAR(argc) UNUSED_VAR(argv) int k; UNUSED_VAR(k) return 0; }

Quantomatic

Globularとの関係は、Quantum Groupが作った以外は無関係だけどね。ホームページ(サイト) https://quantomatic.github.io/ ダウンロードボタンを押すとすぐさまダウンロードになるので注意。ダウンロードファイルは、QuantoDrive-<プラットフォーム>-<…

サイズがはっきりした整数

サイズがはっきりした整数を使いたいなら、stdint.h を使え。unit32_t とかある。

クローズの失敗

ファイルのクローズのようなリソースの解放・後始末に関して失敗した場合、いったいどうすりゃいいの。失敗したと知っても、その後何もできない。知ってもどうにもならないことなんて知りたくない。 void close(...) でいい気もする。まーしかし、ログに出す…

Commandの分類とネーミング

メイヤー流のCommandのさらなる分類 リソース獲得 -- 増進的状態変容で、戻り値はないか、成功・失敗を告げる。 リソース解放 -- 減退的状態変容で、戻り値はないか、成功・失敗を告げる。 リソース生成 -- 増進的状態変容だが、自分で所有権を持たず、生成…

grepabilityとネーミング

Cライブラリでメモリ管理は最早しないとは思うが、alloc で malloc, calloc, alloca を検索できるから、ユーザー関数の名前で 'alloc' は使うべきではない。 同様に free も使うべきではない。 同様に、new, delete も使うべきではない。 大文字が許されるな…

誤解?

「確信犯」とか「性悪説」とかの言葉には一般的な誤解があるようだが、むしろ誤解・誤用で使っている人が多だろう。 すっとぼけているが実は分かってやっている。 人を信用する態度。 別にいいんじゃないのかな、それで→言葉は通じることが一番だいじ - 檜山…

爺感:参照/ポインター引数と変更

爺感:なんだか作法がわからん - 檜山正幸のキマイラ飼育記 メモ編 参照を渡すのは書き換えるためだと思うのだがなー。書き換えない意図こそconstで示すべきじゃないの。 「変更するならポインターを渡す」という人はけっこういるようだ。参照をもらって、参…

ドキュメンテーションコメント内の見出し

ドキュメンテーションコメント内に、Markdownの見出しを入れられるが、そのレベルをいくつにするのが良いか? まだ結論は出てない。それと、ヘッダ側からのドキュメンテーションコメントと実装側からのドキュメンテーションコメントを分けたい。今は水平線で…

状態遷移と状態変容、メイヤーのCQ分離原則

メイヤー先生のCommand-Query分離の原則はいつだって役に立つ。ただ、若干の拡張や補足は必要になる。コマンドとして、“状態空間のendomorphismである状態遷移(transition)”以外に、“異なる状態空間のあいだの写像である状態変容(mutation)”が必要だ。tr…

switch-to-buffer を helm-buffers-list にする

(define-key global-map (kbd "C-x b") 'helm-buffers-list)

Wunderlist バグ

Webクライアントで、完了済みのToDoアイテムの中身が消えてしまう。これで、メモ欄がないので安心したら、消えていただけだったことがある。かなり困る。リロードすると復元するが、リロードのタイミングでだいぶ前のタスクに関する通知が出る。これもバグっ…

所有権の問題

権利には義務が伴う、ってことで、所有権とは「破棄の義務」ってことになる。所有権を獲得するって事は、破棄の義務を背負うってことだ。Rustの所有権モデルとか(いやっ、よく知らないけど^^;)、ユニークポインターだと、所有者を単一にしているようだけど…

さらに、コピー埋め込み方式のデメリット

コレクションの設計をミスったような気がする - 檜山正幸のキマイラ飼育記 メモ編 で、リストのようなコレクションのなかでは、要素へのポインターだけを保持して、要素自体をコピーして抱え込まないほうがいいかも、と書いた。コピー&抱え込み方式は、パフ…

爺感:const参照な引数

おそらく、生々しい/禍々しいポインターを避けるコーディングが最近の傾向なんだろう。それはまったく異論がない。異論がないが、ジイサンがスタイルを変えるのはけっこう大変。とりあえず思ったのは、ポインター引数 Foo *pArg を、const Foo& rArg に変え…

爺感:コピーとポインター

リストの要素をまるまるリスト側にコピーして管理する方式は、パフォーマンスの問題を除いてもマズイ点がある。コピーを、コピー元→コピー先 の矢印で書くことにして、参照(ポインター)も、参照元→参照先 の矢印で考える。A→A' とコピーされたとき、Aへの…

フォーメーションと極限

単一のオブジェクトではなくて、複数のオブジェクトが連携するとき、編成された連合体を何と呼ぶか? あまり適切な呼び名がないような気がする。フェデレーションという言い方もあるが、大げさな気がする。2002年頃、僕はオブジェクトフォーメーションと呼ん…

リネーム、割とおおごと

ファイル名の変更 バージョン管理システムに知らせる。ファイルシステムで勝手にリネームしない。 IDEを使っている場合は、IDEにも知らせる。 Makefile内のファイル名を置き換える。 Doxyfile内のファイル名を置き換える。 ソースファイルのincludeやコメン…

コレクションの設計をミスったような気がする

クラスFooにはコピーコンストラクタと代入演算子が定義されている、とする。で、次のような、Fooを要素とするコレクションを定義する。 class FooCollection { private: std::vector<Foo> elements_; public: void addFoo(int x); }; addFoo() は次のような感じ。</foo>…

C++の初期化

どうも、最近のC++では初期化構文が統一的になるらしい。だが、丸括弧と波括弧がどう違うか(同じか)理解してない。 #include <iostream> struct Foo { int x; int y; /* // これを定義すると、{x, y} の初期化子が使えなくなる Foo() { x = 0; y = 0; } */ }; // 書</iostream>…