<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>Archive

作ってみた→tell - MyMiniCity

普段棲んでいるドメイン下では書けないようなlambdaな事を綴る．
あと草稿とかも置いたりするかも．

って言うか，ここの使い方ってよくわからないんだけど，「転載」指向のblogか？ここ？

「Add to friends」とか書いてあるボタンは割と無差別に押してます．



</description><title>challenge ciphertext</title><generator>Tumblr (3.0; @tell)</generator><link>http://tell.tumblr.com/</link><item><title>C++で定理証明(?)</title><description>&lt;p&gt;&lt;a href="http://ranha.tumblr.com/post/219796172/c"&gt;ranha&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; C++のtemplateは良く知らないけど、全部判明してからじゃないと一致性チェック出来ない?(多分部分特殊化された状態でふにゃふにゃしたものをstructuralに見てくれない?)のでこれでヤるのは無理かなーと思った。(2009-10-18 17:52:09) &lt;a href="http://twitter.com/ranha/status/4963443406"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; うーんなんかC++ではむりぽいのう… &lt;a href="http://d.hatena.ne.jp/ranha/20091018/1255857502"&gt;&lt;/a&gt;&lt;a href="http://d.hatena.ne.jp/ranha/20091018/1255857502"&gt;&lt;a href="http://d.hatena.ne.jp/ranha/20091018/1255857502"&gt;http://d.hatena.ne.jp/ranha/20091018/1255857502&lt;/a&gt;&lt;/a&gt;(2009-10-18 18:22:49) &lt;a href="http://twitter.com/ranha/status/4963710852"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; #proofparty C++でa+0=0+aの怪しげな証明をば… &lt;a href="http://codepad.org/L4feGX1J"&gt;&lt;/a&gt;&lt;a href="http://codepad.org/L4feGX1J"&gt;&lt;a href="http://codepad.org/L4feGX1J"&gt;http://codepad.org/L4feGX1J&lt;/a&gt;&lt;/a&gt;(2009-10-19 17:40:01) &lt;a href="http://twitter.com/kinaba/status/4986574175"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; proposition用テンプレートを特殊化して勝手にインスタンス作られると破綻する。もちろん型安全性を壊す様なことをされると破綻する。停止しない計算を書かれても破綻する。そもそもグローバル変数を使い回すせいで二重帰納法されると破綻する。(2009-10-19 17:42:47) &lt;a href="http://twitter.com/kinaba/status/4986609522"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; addみたいなinductiveな関数を汎用に追加できるようにするのは、やればできるけど面倒なのでやってないだけ。(2009-10-19 17:44:26) &lt;a href="http://twitter.com/kinaba/status/4986629525"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; ふむふむ、これは型theoremのインスタンスpが作れたから証明できたってことだな(2009-10-19 18:49:40) &lt;a href="http://twitter.com/kikx/status/4987449708"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; *pfがNULLでもいいところがなんか問題なきもしなくもないがよくわからん(2009-10-19 18:58:58) &lt;a href="http://twitter.com/kikx/status/4987553208"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; このままだと、forall y , (forall x, x+0=0+x) -&gt; y+0=0+y. にできないなあ。(2009-10-19 19:15:03) &lt;a href="http://twitter.com/kikx/status/4987765703"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/heppoko_maid" width="32" height="32"/&gt;&lt;a href="http://twitter.com/heppoko_maid"&gt;めどすけ&lt;br/&gt;@heppoko_maid&lt;/a&gt; @&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;/a&gt; なるほど。ざっとしか見てませんが、induction stepは関数になるので*がついてると。たしかにNULLだと困りそうですが、NULLにはならないように見えますので問題ないのでは。(static assertでNULLチェックできれば追加するといいかも)(2009-10-19 19:28:21) &lt;a href="http://twitter.com/heppoko_maid/status/4987936670"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; あーわかったぞ、templateはforallする変数名とPropの引数名がまじってるからよくないんだな(2009-10-19 20:07:42) &lt;a href="http://twitter.com/kikx/status/4988486871"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/heppoko_maid" width="32" height="32"/&gt;&lt;a href="http://twitter.com/heppoko_maid"&gt;めどすけ&lt;br/&gt;@heppoko_maid&lt;/a&gt; @&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;/a&gt; これは正確には、forallという名前付けの問題(?)のように見えます。nat::forallはinductionに特化した証明になっているので、沖句さんの使っているforallのような(functor的な)使い方はできないですね。(2009-10-19 21:00:52) &lt;a href="http://twitter.com/heppoko_maid/status/4989307974"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; こんな感じでforall に apply をつけてみたんだけど、NとYが違うのでまだうまくいってないのです。&lt;a href="http://codepad.org/d3ELuDVL"&gt;&lt;/a&gt;&lt;a href="http://codepad.org/d3ELuDVL"&gt;&lt;a href="http://codepad.org/d3ELuDVL"&gt;http://codepad.org/d3ELuDVL&lt;/a&gt;&lt;/a&gt;(2009-10-19 21:23:21) &lt;a href="http://twitter.com/kikx/status/4989678555"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; たぶん、T -&gt; Y -&gt; subs::type のインスタンスがあれば残りは埋められるんじゃないかなと思っているのです(2009-10-19 21:25:43) &lt;a href="http://twitter.com/kikx/status/4989716060"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/heppoko_maid" width="32" height="32"/&gt;&lt;a href="http://twitter.com/heppoko_maid"&gt;めどすけ&lt;br/&gt;@heppoko_maid&lt;/a&gt; @&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;/a&gt; こうやろうとすると、forall::applyの証明がパラメータYの構造に依存してしまうような。forallは普通の定義にして、inductionからforallまたはsubtypeが出てくるようにすればいいのかなーと、なんとなく思ってます(2009-10-19 21:32:52) &lt;a href="http://twitter.com/heppoko_maid/status/4989831474"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; Conceptあったら状況は変わったんだろうか・・・。うひっ。(2009-10-19 23:41:10) &lt;a href="http://twitter.com/ranha/status/4992309733"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; 先程のa+0=0+aを少し説明すると、「X=Yの時に限りeq型の値が作れる」ように型を作ってます。eq_refl/tran/symm等だけがeqを作れる”公理”。他の(真っ当な)手段では作れない。（確かにそう作ってある、とは誰も保証してないので、ここはそう信じる部分。）(2009-10-20 00:05:52) &lt;a href="http://twitter.com/kinaba/status/4992837647"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; C++は中身書かなくて良いから型さえ書けりゃあ証明した事に成る。ぶもも。(2009-10-20 00:08:54) &lt;a href="http://twitter.com/ranha/status/4992902814"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; その準備の上で、inductive_proof::base()はeq&lt;0+0,0+0&gt;型の値を作っていて、同step()は、eq&lt;0+N,N+0&gt;の値が与えられれば、eq&lt;0+s(N),s(N)+0&gt;の値を作れるよ、という関数。あとは合わせて帰納法。(2009-10-20 00:10:43) &lt;a href="http://twitter.com/kinaba/status/4992942470"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; ただし、帰納法を回す側は、「eq&lt;0+s(N),s(N)+0&gt; step( eq&lt;0+N,N+0&gt; ) という型のつく関数があるなら、確かにeq&lt;0+N,N+0&gt;からeq&lt;0+s(N),s(N)+0&gt;は作れるんだろう」と仮定しちゃっているんだけどこれは本当は間違いで(2009-10-20 00:12:49) &lt;a href="http://twitter.com/kinaba/status/4992987276"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; というのは、eq&lt;略1&gt; step( eq&lt;略0&gt; x ) { return step(x); } としてしまえば型チェックは通るけど、これじゃ無限ループして eq&lt;略1&gt; 型の値は作れてない。間違い。これを避けるために、本物の証明記述言語は、無限ループは書けないようになってる。(2009-10-20 00:15:55) &lt;a href="http://twitter.com/kinaba/status/4993053072"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; .@&lt;a href="http://twitter.com/kinaba"&gt;kinaba&lt;/a&gt; 面白かったので、私が勝手に面白いみたいなエントリをはてなに書こうと思ってたんですけどそれはちょっとクオリティ下げて他の人に刺される気がするので、良かったらblogで解説してください！(2009-10-20 00:17:28) &lt;a href="http://twitter.com/ranha/status/4993087027"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; @&lt;a href="http://twitter.com/ranha"&gt;ranha&lt;/a&gt; さんが刺されて大惨事流血沙汰になったブログは面白そうなのでちょっと見てみたい…じゃなくて、はい、後でまとめておきます。たぶん水曜の夜になります(2009-10-20 00:43:11) &lt;a href="http://twitter.com/kinaba/status/4993650737"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/heppoko_maid" width="32" height="32"/&gt;&lt;a href="http://twitter.com/heppoko_maid"&gt;めどすけ&lt;br/&gt;@heppoko_maid&lt;/a&gt; 前に書いていたのは、nat_ind P := P 0 -&gt; (forall x. P (S x)) -&gt; forall x. P x が帰納法なので、forallをbasisとして用意しておいてそれをsubstに適用したほうが簡単じゃないかと思った次第。(2009-10-20 01:40:59) &lt;a href="http://twitter.com/heppoko_maid/status/4994894814"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/heppoko_maid" width="32" height="32"/&gt;&lt;a href="http://twitter.com/heppoko_maid"&gt;めどすけ&lt;br/&gt;@heppoko_maid&lt;/a&gt; 帰納法をつかって(natに特化した)forallを言ううまいやり方はどうも思いつかないなあ。(2009-10-20 01:41:37) &lt;a href="http://twitter.com/heppoko_maid/status/4994908081"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/heppoko_maid" width="32" height="32"/&gt;&lt;a href="http://twitter.com/heppoko_maid"&gt;めどすけ&lt;br/&gt;@heppoko_maid&lt;/a&gt; substが完全一致ではなくて、ちょっと弱めてeqなのは言えるのかもしれない。(2009-10-20 01:44:16) &lt;a href="http://twitter.com/heppoko_maid/status/4994963273"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; うーん　多分加算可換性をC++のコンパイルタイムに証明出来た気がする・・・。Lemma毎に取りあえずnamespace分けていたのだけれども、そうするとパターン変数(何の意味も無い兎に角パターン変数だけ表す)が全部別々になって悲しいので、共通に括りだしてやり直せば・・・。(2009-10-20 04:39:46) &lt;a href="http://twitter.com/ranha/status/4998668844"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; forallの形でやりにくい(forallな変数が2つとか出てくると)ので、9個ぐらいまでの場合を準備しておいてどうこう、とやるか、やっぱりパターン変数をglobalに置いてどっこいしょみたいな感じなのかなぁ・・・。という。(2009-10-20 04:41:00) &lt;a href="http://twitter.com/ranha/status/4998693697"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; namespaceってtemplate引数持てないのかぁ。なんかもう普通に依存型のモジュールとかではぼそぼそとか思ったけど。(2009-10-20 12:21:21) &lt;a href="http://twitter.com/ranha/status/5009375909"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; 可換性もやってみようとしたけどめんどうだ。&lt;a href="http://codepad.org/DydSnKP0"&gt;&lt;/a&gt;&lt;a href="http://codepad.org/DydSnKP0"&gt;&lt;a href="http://codepad.org/DydSnKP0"&gt;http://codepad.org/DydSnKP0&lt;/a&gt;&lt;/a&gt; (途中)。nat::forall から Prop[X/N] を導くには N がzeroとsuccからinductiveに作られてることの証明が必要。つまりNの型が…。(2009-10-20 12:33:06) &lt;a href="http://twitter.com/kinaba/status/5009660665"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; ただforall tな所に型が潜り込んでで縛りが無い(例えばzeroとsuccに関係性が無い)ので、ダメダメだなーと思います。ふーみゅ・・・。一応証明テンプレート(baseとstep)があるのでユーザはそれに則る様にすれば・・・とは思うんですが。(2009-10-20 14:37:45) &lt;a href="http://twitter.com/ranha/status/5012168330"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; なんだろう、Conceptは知らないんですけど、Conceptがあればtype family的な事が出来て、一見無関係な型に制約を付けて無関係では無くしたり、後は明らかに違法なものが渡ってくる事を防いだりは出来るのかなぁ・・・。(2009-10-20 14:38:30) &lt;a href="http://twitter.com/ranha/status/5012178660"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; struct Dummy{}; struct zero{}; template struct succ {}; これだと、succみたいなのも出来るのがソレっていう感じなんですが、一方succみたいなパターンを表す型も渡したいので…(2009-10-20 14:56:15) &lt;a href="http://twitter.com/ranha/status/5012427153"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; @&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;/a&gt; (forall x, P x) の証明オブジェクトが帰納法のベースとステップの証明をメンバ変数に持っておくのが正攻法なんですけど、帰納法ステップって多相型の関数なので、型を一度もごまかさないで変数にとっとくのってC++だと無理なんですよね、これ。(2009-10-20 16:27:04) &lt;a href="http://twitter.com/kinaba/status/5013585023"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; forallを帰納法に特化させない場合も同じことで、template P operator()(X x) な関数テンプレートを値として持たねばならぬ。C++/DよりJavaかScala辺りでやった方が多分楽。(2009-10-20 16:33:59) &lt;a href="http://twitter.com/kinaba/status/5013673067"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; @&lt;a href="http://twitter.com/ranha"&gt;ranha&lt;/a&gt; forall::conv が、返値型がPropだけど実際にはProp型のオブジェクトを作れてないので、その辺がよろしくないです。(2009-10-20 16:40:54) &lt;a href="http://twitter.com/kinaba/status/5013758164"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; . @&lt;a href="http://twitter.com/kinaba"&gt;kinaba&lt;/a&gt; そこはもう完全に不味い匂いがぷんぷんぷんぷんする所なんですが、そもそも不味いですけども、C++的にどのタイミングでどのくらいテンプレート周りが固まって行くかとか分からないので全体が霧掛かって分からない感です。取りあえずソコを考え直します。(2009-10-20 16:48:25) &lt;a href="http://twitter.com/ranha/status/5013852410"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; &lt;a href="http://codepad.org/AjZoGD52"&gt;&lt;/a&gt;&lt;a href="http://codepad.org/AjZoGD52"&gt;&lt;a href="http://codepad.org/AjZoGD52"&gt;http://codepad.org/AjZoGD52&lt;/a&gt;&lt;/a&gt; やっとコンパイル通ったよー ＞@&lt;a href="http://twitter.com/kinaba"&gt;kinaba&lt;/a&gt; @ranha @heppoko_maid(2009-10-20 17:39:59) &lt;a href="http://twitter.com/kikx/status/5014473813"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; forallの形を辞めて、template引数で渡って来た値の意味を全称変数にしちゃって、帰納的操作を全部隠蔽してそこに投げさせる感じかなー(2009-10-20 17:49:21) &lt;a href="http://twitter.com/ranha/status/5014581387"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; @&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;/a&gt; ∀x(0+x=x+0) の証明オブジェクトじゃなくて 任意のxに対して(0+x=x+0)の証明オブジェクトを返すジェネレータを作ってる感じですかね。これで ∀x∀y(y+x=x+y) の二重帰納法回せるかな…(2009-10-20 17:50:52) &lt;a href="http://twitter.com/kinaba/status/5014600290"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; A-&gt;B は全部 template struct AimplB { static B proof() {}; }; で表現しないと、どうしようもない気がするけど、実際にインスタンシエートされないと型があってるのかわからんなあ(2009-10-20 17:53:33) &lt;a href="http://twitter.com/kikx/status/5014632634"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; やっぱりインスタンシエートしないと型チェックされないのがいかんなあ。コンセプトとか使えばいいわけ？(2009-10-20 18:01:02) &lt;a href="http://twitter.com/kikx/status/5014721330"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; 私のヤツは実際に値入れてまわすと死ぬなぁ・・・。これは良く無い・・・。あとLeibniz Equalityも書こうと思ったけど酷い感じになる取りあえず晩ご飯！！(2009-10-20 18:01:17) &lt;a href="http://twitter.com/ranha/status/5014724694"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; 具体的な値が与えられたときだけ動くんだから、そりゃ二重帰納法でもなんでもできるか。それもそうだ。genericsじゃなくてtemplateなC++でやるなら、forallの証明をチェックするのは諦めてforallをインスタンス化したらチェックが初めて走る、の方がとっても自然だ(2009-10-20 18:01:26) &lt;a href="http://twitter.com/kinaba/status/5014726804"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; C++だと証明されたプログラムとして使うなら、結局有限個のインスタンスに対して証明できれば十分だし、これでいいのかなあ(2009-10-20 18:07:35) &lt;a href="http://twitter.com/kikx/status/5014803334"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; Conceptは一体何が出来たんだろう夢膨らむ。いや膨らまないけど…(2009-10-20 18:16:19) &lt;a href="http://twitter.com/ranha/status/5014907543"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; ていうかテンプレート引数はソレ自体の型が無い(情報が無い)ので、依存型みたく出来ない(あいつらは一応Πx∈T.P(x)みたいな感じで情報はある)のでそういう所でC++は違うのかなーっていうか。(2009-10-20 18:20:38) &lt;a href="http://twitter.com/ranha/status/5014961041"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kikx" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kikx"&gt;kikx&lt;br/&gt;@kikx&lt;/a&gt; struct forall { template FroallImpl::prop proof(ForallImpl proofed); } にすればいい気がしてきた(2009-10-20 19:11:07) &lt;a href="http://twitter.com/kikx/status/5015583215"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; C++で再びNat上での加算の可換性の証明を行った。 &lt;a href="http://d.hatena.ne.jp/ranha/20091021/1256055346"&gt;&lt;/a&gt;&lt;a href="http://d.hatena.ne.jp/ranha/20091021/1256055346"&gt;&lt;a href="http://d.hatena.ne.jp/ranha/20091021/1256055346"&gt;http://d.hatena.ne.jp/ranha/20091021/1256055346&lt;/a&gt;&lt;/a&gt;(2009-10-21 01:16:24) &lt;a href="http://twitter.com/ranha/status/5021794451"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; 物凄くどっち付かずに成っている・・・。kinabaさんの方法だとコンパイル時に強めのチェックが掛かるけれども今のままだと少し手厳しいのと、私が１つ前に張ったconv付き(forallの全称変数を具体化)のヤツはまぁ何とか残念にくぐり抜ける系だったので、もうそれを認めるとか…(2009-10-21 01:44:39) &lt;a href="http://twitter.com/ranha/status/5022366059"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; kikxさんのと今張ったものは、コンパイル時の「証明本体」の部分のチェックがゆるゆるガバガバすぎ。はふぅ。(2009-10-21 01:45:50) &lt;a href="http://twitter.com/ranha/status/5022390225"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; ああー でもaddの定義を変えて、元のeq_addにすれば何とか成るかも…(2009-10-21 01:50:05) &lt;a href="http://twitter.com/ranha/status/5022477888"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/kinaba" width="32" height="32"/&gt;&lt;a href="http://twitter.com/kinaba"&gt;Kazuhiro Inaba&lt;br/&gt;@kinaba&lt;/a&gt; &lt;a href="http://bit.ly/O3ywA"&gt;&lt;/a&gt;&lt;a href="http://bit.ly/O3ywA"&gt;&lt;a href="http://bit.ly/O3ywA"&gt;http://bit.ly/O3ywA&lt;/a&gt;&lt;/a&gt; にっきかいた。#proofparty の人たちには別に新しいことは何も書いてないですが(2009-10-22 02:20:51) &lt;a href="http://twitter.com/kinaba/status/5048073877"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/4963443406"&gt;&lt;a href="http://twitter.com/ranha/status/4963443406"&gt;http://twitter.com/ranha/status/4963443406&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/4963710852"&gt;&lt;a href="http://twitter.com/ranha/status/4963710852"&gt;http://twitter.com/ranha/status/4963710852&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/4992309733"&gt;&lt;a href="http://twitter.com/ranha/status/4992309733"&gt;http://twitter.com/ranha/status/4992309733&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/4992902814"&gt;&lt;a href="http://twitter.com/ranha/status/4992902814"&gt;http://twitter.com/ranha/status/4992902814&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/4993087027"&gt;&lt;a href="http://twitter.com/ranha/status/4993087027"&gt;http://twitter.com/ranha/status/4993087027&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/4998693697"&gt;&lt;a href="http://twitter.com/ranha/status/4998693697"&gt;http://twitter.com/ranha/status/4998693697&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/4998668844"&gt;&lt;a href="http://twitter.com/ranha/status/4998668844"&gt;http://twitter.com/ranha/status/4998668844&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5012168330"&gt;&lt;a href="http://twitter.com/ranha/status/5012168330"&gt;http://twitter.com/ranha/status/5012168330&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5012178660"&gt;&lt;a href="http://twitter.com/ranha/status/5012178660"&gt;http://twitter.com/ranha/status/5012178660&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5012427153"&gt;&lt;a href="http://twitter.com/ranha/status/5012427153"&gt;http://twitter.com/ranha/status/5012427153&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5013852410"&gt;&lt;a href="http://twitter.com/ranha/status/5013852410"&gt;http://twitter.com/ranha/status/5013852410&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5014581387"&gt;&lt;a href="http://twitter.com/ranha/status/5014581387"&gt;http://twitter.com/ranha/status/5014581387&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5014724694"&gt;&lt;a href="http://twitter.com/ranha/status/5014724694"&gt;http://twitter.com/ranha/status/5014724694&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5014907543"&gt;&lt;a href="http://twitter.com/ranha/status/5014907543"&gt;http://twitter.com/ranha/status/5014907543&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5014961041"&gt;&lt;a href="http://twitter.com/ranha/status/5014961041"&gt;http://twitter.com/ranha/status/5014961041&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5021794451"&gt;&lt;a href="http://twitter.com/ranha/status/5021794451"&gt;http://twitter.com/ranha/status/5021794451&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5022366059"&gt;&lt;a href="http://twitter.com/ranha/status/5022366059"&gt;http://twitter.com/ranha/status/5022366059&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5022390225"&gt;&lt;a href="http://twitter.com/ranha/status/5022390225"&gt;http://twitter.com/ranha/status/5022390225&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5022477888"&gt;&lt;a href="http://twitter.com/ranha/status/5022477888"&gt;http://twitter.com/ranha/status/5022477888&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/5009375909"&gt;&lt;a href="http://twitter.com/ranha/status/5009375909"&gt;http://twitter.com/ranha/status/5009375909&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4986574175"&gt;&lt;a href="http://twitter.com/kinaba/status/4986574175"&gt;http://twitter.com/kinaba/status/4986574175&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4986609522"&gt;&lt;a href="http://twitter.com/kinaba/status/4986609522"&gt;http://twitter.com/kinaba/status/4986609522&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4986629525"&gt;&lt;a href="http://twitter.com/kinaba/status/4986629525"&gt;http://twitter.com/kinaba/status/4986629525&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4992837647"&gt;&lt;a href="http://twitter.com/kinaba/status/4992837647"&gt;http://twitter.com/kinaba/status/4992837647&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4992942470"&gt;&lt;a href="http://twitter.com/kinaba/status/4992942470"&gt;http://twitter.com/kinaba/status/4992942470&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4992987276"&gt;&lt;a href="http://twitter.com/kinaba/status/4992987276"&gt;http://twitter.com/kinaba/status/4992987276&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4993053072"&gt;&lt;a href="http://twitter.com/kinaba/status/4993053072"&gt;http://twitter.com/kinaba/status/4993053072&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/4993650737"&gt;&lt;a href="http://twitter.com/kinaba/status/4993650737"&gt;http://twitter.com/kinaba/status/4993650737&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5009660665"&gt;&lt;a href="http://twitter.com/kinaba/status/5009660665"&gt;http://twitter.com/kinaba/status/5009660665&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5013585023"&gt;&lt;a href="http://twitter.com/kinaba/status/5013585023"&gt;http://twitter.com/kinaba/status/5013585023&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5013673067"&gt;&lt;a href="http://twitter.com/kinaba/status/5013673067"&gt;http://twitter.com/kinaba/status/5013673067&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5013758164"&gt;&lt;a href="http://twitter.com/kinaba/status/5013758164"&gt;http://twitter.com/kinaba/status/5013758164&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5014600290"&gt;&lt;a href="http://twitter.com/kinaba/status/5014600290"&gt;http://twitter.com/kinaba/status/5014600290&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5014726804"&gt;&lt;a href="http://twitter.com/kinaba/status/5014726804"&gt;http://twitter.com/kinaba/status/5014726804&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kinaba/status/5048073877"&gt;&lt;a href="http://twitter.com/kinaba/status/5048073877"&gt;http://twitter.com/kinaba/status/5048073877&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/4987449708"&gt;&lt;a href="http://twitter.com/kikx/status/4987449708"&gt;http://twitter.com/kikx/status/4987449708&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/4987553208"&gt;&lt;a href="http://twitter.com/kikx/status/4987553208"&gt;http://twitter.com/kikx/status/4987553208&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/4987765703"&gt;&lt;a href="http://twitter.com/kikx/status/4987765703"&gt;http://twitter.com/kikx/status/4987765703&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/4988486871"&gt;&lt;a href="http://twitter.com/kikx/status/4988486871"&gt;http://twitter.com/kikx/status/4988486871&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/4989678555"&gt;&lt;a href="http://twitter.com/kikx/status/4989678555"&gt;http://twitter.com/kikx/status/4989678555&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/4989716060"&gt;&lt;a href="http://twitter.com/kikx/status/4989716060"&gt;http://twitter.com/kikx/status/4989716060&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/5014473813"&gt;&lt;a href="http://twitter.com/kikx/status/5014473813"&gt;http://twitter.com/kikx/status/5014473813&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/5014632634"&gt;&lt;a href="http://twitter.com/kikx/status/5014632634"&gt;http://twitter.com/kikx/status/5014632634&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/5014721330"&gt;&lt;a href="http://twitter.com/kikx/status/5014721330"&gt;http://twitter.com/kikx/status/5014721330&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/5014803334"&gt;&lt;a href="http://twitter.com/kikx/status/5014803334"&gt;http://twitter.com/kikx/status/5014803334&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/kikx/status/5015583215"&gt;&lt;a href="http://twitter.com/kikx/status/5015583215"&gt;http://twitter.com/kikx/status/5015583215&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4987936670"&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4987936670"&gt;http://twitter.com/heppoko_maid/status/4987936670&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4989307974"&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4989307974"&gt;http://twitter.com/heppoko_maid/status/4989307974&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4989831474"&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4989831474"&gt;http://twitter.com/heppoko_maid/status/4989831474&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4994894814"&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4994894814"&gt;http://twitter.com/heppoko_maid/status/4994894814&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4994908081"&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4994908081"&gt;http://twitter.com/heppoko_maid/status/4994908081&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4994963273"&gt;&lt;a href="http://twitter.com/heppoko_maid/status/4994963273"&gt;http://twitter.com/heppoko_maid/status/4994963273&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://tell.tumblr.com/post/233579569</link><guid>http://tell.tumblr.com/post/233579569</guid><pubDate>Thu, 05 Nov 2009 13:44:10 +0900</pubDate></item><item><title>拡張可能なデータ型</title><description>&lt;p&gt;&lt;a href="http://ranha.tumblr.com/post/192720914"&gt;ranha&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/4126621880"&gt;&lt;a href="http://twitter.com/ranha/status/4126621880"&gt;http://twitter.com/ranha/status/4126621880&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/4126639529"&gt;&lt;a href="http://twitter.com/ranha/status/4126639529"&gt;http://twitter.com/ranha/status/4126639529&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/4126669748"&gt;&lt;a href="http://twitter.com/ranha/status/4126669748"&gt;http://twitter.com/ranha/status/4126669748&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;この辺が参考になる?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.haskell.org/pipermail/haskell/2006-July/018172.html"&gt;&lt;a href="http://www.haskell.org/pipermail/haskell/2006-July/018172.html"&gt;http://www.haskell.org/pipermail/haskell/2006-July/018172.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://guppy.eng.kagawa-u.ac.jp/~kagawa/PVH/"&gt;&lt;a href="http://guppy.eng.kagawa-u.ac.jp/~kagawa/PVH/"&gt;http://guppy.eng.kagawa-u.ac.jp/~kagawa/PVH/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://tell.tumblr.com/post/233577919</link><guid>http://tell.tumblr.com/post/233577919</guid><pubDate>Thu, 05 Nov 2009 13:42:09 +0900</pubDate></item><item><title>型...きゅん??</title><description>&lt;p&gt;&lt;a href="http://ranha.tumblr.com/post/174924331"&gt;ranha&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3598749459"&gt;&lt;a href="http://twitter.com/ranha/status/3598749459"&gt;http://twitter.com/ranha/status/3598749459&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/asm__/status/3598819573"&gt;&lt;a href="http://twitter.com/asm__/status/3598819573"&gt;http://twitter.com/asm__/status/3598819573&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/m0h1can/status/3598890839"&gt;&lt;a href="http://twitter.com/m0h1can/status/3598890839"&gt;http://twitter.com/m0h1can/status/3598890839&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599046158"&gt;&lt;a href="http://twitter.com/ranha/status/3599046158"&gt;http://twitter.com/ranha/status/3599046158&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ikegami__/status/3598831349"&gt;&lt;a href="http://twitter.com/ikegami__/status/3598831349"&gt;http://twitter.com/ikegami__/status/3598831349&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599115276"&gt;&lt;a href="http://twitter.com/ranha/status/3599115276"&gt;http://twitter.com/ranha/status/3599115276&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599164655"&gt;&lt;a href="http://twitter.com/ranha/status/3599164655"&gt;http://twitter.com/ranha/status/3599164655&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/m0h1can/status/3599115357"&gt;&lt;a href="http://twitter.com/m0h1can/status/3599115357"&gt;http://twitter.com/m0h1can/status/3599115357&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/m0h1can/status/3599238569"&gt;&lt;a href="http://twitter.com/m0h1can/status/3599238569"&gt;http://twitter.com/m0h1can/status/3599238569&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/m0h1can/status/3599286928"&gt;&lt;a href="http://twitter.com/m0h1can/status/3599286928"&gt;http://twitter.com/m0h1can/status/3599286928&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/m0h1can/status/3599297298"&gt;&lt;a href="http://twitter.com/m0h1can/status/3599297298"&gt;http://twitter.com/m0h1can/status/3599297298&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599244158"&gt;&lt;a href="http://twitter.com/ranha/status/3599244158"&gt;http://twitter.com/ranha/status/3599244158&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599258696"&gt;&lt;a href="http://twitter.com/ranha/status/3599258696"&gt;http://twitter.com/ranha/status/3599258696&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599348816"&gt;&lt;a href="http://twitter.com/ranha/status/3599348816"&gt;http://twitter.com/ranha/status/3599348816&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599373755"&gt;&lt;a href="http://twitter.com/ranha/status/3599373755"&gt;http://twitter.com/ranha/status/3599373755&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599396533"&gt;&lt;a href="http://twitter.com/ranha/status/3599396533"&gt;http://twitter.com/ranha/status/3599396533&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ranha/status/3599457002"&gt;&lt;a href="http://twitter.com/ranha/status/3599457002"&gt;http://twitter.com/ranha/status/3599457002&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ikegami__/status/3598877012"&gt;&lt;a href="http://twitter.com/ikegami__/status/3598877012"&gt;http://twitter.com/ikegami__/status/3598877012&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/alohakun/status/3600138039"&gt;&lt;a href="http://twitter.com/alohakun/status/3600138039"&gt;http://twitter.com/alohakun/status/3600138039&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/alohakun/status/3600156447"&gt;&lt;a href="http://twitter.com/alohakun/status/3600156447"&gt;http://twitter.com/alohakun/status/3600156447&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/alohakun/status/3600185237"&gt;&lt;a href="http://twitter.com/alohakun/status/3600185237"&gt;http://twitter.com/alohakun/status/3600185237&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ikegami__/status/3600201641"&gt;&lt;a href="http://twitter.com/ikegami__/status/3600201641"&gt;http://twitter.com/ikegami__/status/3600201641&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://twitter.com/ikegami__/status/3600214738"&gt;&lt;a href="http://twitter.com/ikegami__/status/3600214738"&gt;http://twitter.com/ikegami__/status/3600214738&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; 初期の頃の、静的型付け言語っていうのは、何か理由があってそうなってたんだろうか。型チェックに基づく安全性とか、最適化とか、そういう事は考えられてなくて、自然と型っていう発想がただそこにあったんじゃないかなぁみたいな。うーん。50,60年前・・・?(2009-08-28 17:02:31) &lt;a href="http://twitter.com/ranha/status/3598749459"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/asm__" width="32" height="32"/&gt;&lt;a href="http://twitter.com/asm__"&gt;asm&lt;br/&gt;@asm__&lt;/a&gt; @&lt;a href="http://twitter.com/ranha"&gt;ranha&lt;/a&gt; 型付けというより何バイト割り当てるか だったんじゃないかな C++からやたら厳しくなった理由は…なんかあった気がする(2009-08-28 17:09:45) &lt;a href="http://twitter.com/asm__/status/3598819573"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ikegami__" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ikegami__"&gt;Ikegami Daisuke&lt;br/&gt;@ikegami__&lt;/a&gt; 確かに、型理論と論理学や圏論が合流したのは最近である(2009-08-28 17:10:53) &lt;a href="http://twitter.com/ikegami__/status/3598831349"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ikegami__" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ikegami__"&gt;Ikegami Daisuke&lt;br/&gt;@ikegami__&lt;/a&gt; でも、型付き Lisp は 50 年前くらいからあるのかな?(2009-08-28 17:15:25) &lt;a href="http://twitter.com/ikegami__/status/3598877012"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/m0h1can" width="32" height="32"/&gt;&lt;a href="http://twitter.com/m0h1can"&gt;モヒカンではない&lt;br/&gt;@m0h1can&lt;/a&gt; 最初ってビット幅が型で、まぁとりあえずデータ壊さない為の目印だった、とか勝手に思ってるんだけど、こんなテキトーな嘘かけば賢人が教えてくれるかなー(2009-08-28 17:16:51) &lt;a href="http://twitter.com/m0h1can/status/3598890839"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; 1958年、ALGOL 58とか想像しにくいぐらい昔で何が起こっていたんだろう。むしろ単に、区別を無くす、っていうような発想が無かったんじゃないだろうか。(2009-08-28 17:33:19) &lt;a href="http://twitter.com/ranha/status/3599046158"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; そういう事考えると、1960ぐらいのLispとかおめがヤバい感じが・・・。(2009-08-28 17:40:42) &lt;a href="http://twitter.com/ranha/status/3599115276"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/m0h1can" width="32" height="32"/&gt;&lt;a href="http://twitter.com/m0h1can"&gt;モヒカンではない&lt;br/&gt;@m0h1can&lt;/a&gt; FORTRAN I(1954)の時点で型あったんじゃない？整数や小数点を区別したり、コンパイラだからか？(2009-08-28 17:40:43) &lt;a href="http://twitter.com/m0h1can/status/3599115357"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; FORTRANに型があるのは、なんか単純にアセンブリのインストラクションにあるのをそのまま持って来た感じかなーみたいな。浮動小数点命令セットとか、数値命令セットとか・・・。その区別を持ち上げると自然とああはならないのか。お分かりだろうか?分かりません。(2009-08-28 17:45:51) &lt;a href="http://twitter.com/ranha/status/3599164655"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/m0h1can" width="32" height="32"/&gt;&lt;a href="http://twitter.com/m0h1can"&gt;モヒカンではない&lt;br/&gt;@m0h1can&lt;/a&gt; まともにデータ型区別するのは66以降ですね(2009-08-28 17:53:39) &lt;a href="http://twitter.com/m0h1can/status/3599238569"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; 「機械語とのセマンティクスギャップが少ない」「一般的には機械語やアセンブリ言語を指す。」絶望があった　&lt;a href="http://bit.ly/EFD6x"&gt;&lt;/a&gt;&lt;a href="http://bit.ly/EFD6x"&gt;&lt;a href="http://bit.ly/EFD6x"&gt;http://bit.ly/EFD6x&lt;/a&gt;&lt;/a&gt;(2009-08-28 17:54:16) &lt;a href="http://twitter.com/ranha/status/3599244158"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; ランタイムエラーとか起こされると資源的な意味で多分暴動が起きるので、そういう事を許さない為にチェックとかなって、チェックするのには型が使えるから型チェックみたいな・・・。(2009-08-28 17:55:48) &lt;a href="http://twitter.com/ranha/status/3599258696"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/m0h1can" width="32" height="32"/&gt;&lt;a href="http://twitter.com/m0h1can"&gt;モヒカンではない&lt;br/&gt;@m0h1can&lt;/a&gt; ただ少くともラッセルの型みたいな抽象的な何かを導入する発想はコンピュータ以前に広まってたと思ったりしますね(2009-08-28 17:58:55) &lt;a href="http://twitter.com/m0h1can/status/3599286928"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/m0h1can" width="32" height="32"/&gt;&lt;a href="http://twitter.com/m0h1can"&gt;モヒカンではない&lt;br/&gt;@m0h1can&lt;/a&gt; 型を明確に意識した最初の実装は何で誰だろ？(2009-08-28 18:00:01) &lt;a href="http://twitter.com/m0h1can/status/3599297298"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; 少なくとも、LCF MLの頃は、今で言う　型　をそれだと言っても問題は無い気がしていて、でもそれは70年最後、80年頭ですしその間になんか。simply typed λcalculusとか普通にどうなのかなぁ・・・。(2009-08-28 18:05:10) &lt;a href="http://twitter.com/ranha/status/3599348816"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; Simulaとかあの辺はジャストミートなのでは無いかとか思ったけど分かりません。型とかいうよりは、オブジェクトと、その関係とかなのかなぁ。でもそういうのは多分それだと思う。(2009-08-28 18:07:48) &lt;a href="http://twitter.com/ranha/status/3599373755"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; untyped λ-calculusから、typed λ-calculusにresearchが移ったなんかみたいなのは、全然知りませんけど、そうなのかなぁ。結局そこに在ったけど、見ていた/考えていたものが違えばそれは別なので、そういう事で見ると…?(2009-08-28 18:10:14) &lt;a href="http://twitter.com/ranha/status/3599396533"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ranha" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ranha"&gt;uezato yuya&lt;br/&gt;@ranha&lt;/a&gt; そもそも研究と、実用では、要請が違うんだろう。でも今は、それらが結びついているのだとすると、それは良い世界なのでは無いかとちょっと思います。元々意図していなくても、結局同じ事をやってればいつか繋がる時が来るんだろうか。(2009-08-28 18:16:38) &lt;a href="http://twitter.com/ranha/status/3599457002"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/alohakun" width="32" height="32"/&gt;&lt;a href="http://twitter.com/alohakun"&gt;ザイロリック錠&lt;br/&gt;@alohakun&lt;/a&gt; 型の発想って、群論とかそこらへんなんじゃないですかね。集合に対して許される演算の集合が規定される。(2009-08-28 19:28:09) &lt;a href="http://twitter.com/alohakun/status/3600138039"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/alohakun" width="32" height="32"/&gt;&lt;a href="http://twitter.com/alohakun"&gt;ザイロリック錠&lt;br/&gt;@alohakun&lt;/a&gt; 望ましい性質を備えたプログラムの集合を定義しようと思うと、自然と型理論の発想に行き着く気がするけど。昔は、プログラムを動かすだけで精一杯だったから、プログラムの性質についての議論が深まるのは、少し時代が進んでからだと思う。(2009-08-28 19:30:04) &lt;a href="http://twitter.com/alohakun/status/3600156447"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/alohakun" width="32" height="32"/&gt;&lt;a href="http://twitter.com/alohakun"&gt;ザイロリック錠&lt;br/&gt;@alohakun&lt;/a&gt; 計算機械や初期の言語にも、「型」そのものの概念はあったのだろうけど、まだ「理論」は無かったんだろうね。(2009-08-28 19:32:48) &lt;a href="http://twitter.com/alohakun/status/3600185237"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ikegami__" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ikegami__"&gt;Ikegami Daisuke&lt;br/&gt;@ikegami__&lt;/a&gt; 型付けされた言語の型は、群ほどきれいな構造を持ってないですよ。もっとしょうもない性質しかない。だから、圏論とか論理学に近い(2009-08-28 19:34:28) &lt;a href="http://twitter.com/ikegami__/status/3600201641"&gt;link&lt;/a&gt; &lt;img src="http://usericons.relucks.org/twitter/ikegami__" width="32" height="32"/&gt;&lt;a href="http://twitter.com/ikegami__"&gt;Ikegami Daisuke&lt;br/&gt;@ikegami__&lt;/a&gt; 圏論や論理学がしょうもない、とは言ってません。圏論や論理学のしょうもない部分を型の理論の裏付けとして使ってる(2009-08-28 19:35:46) &lt;a href="http://twitter.com/ikegami__/status/3600214738"&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://tell.tumblr.com/post/233577316</link><guid>http://tell.tumblr.com/post/233577316</guid><pubDate>Thu, 05 Nov 2009 13:41:25 +0900</pubDate></item><item><title>みらいのげんごなんか考えてないですけど</title><description>&lt;p&gt;&lt;a href="http://ranha.tumblr.com/post/166482829"&gt;ranha&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FLTVの発表資料が全力でイバヤーバイ&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397159331"&gt;&lt;a href="http://twitter.com/ranha/status/3397159331"&gt;http://twitter.com/ranha/status/3397159331&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397286509"&gt;&lt;a href="http://twitter.com/ranha/status/3397286509"&gt;http://twitter.com/ranha/status/3397286509&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自分で言っててなんですけど、これとかは割と当てになる指針だと思います。&lt;/p&gt;
&lt;p&gt;あと、大体の人は難しいもの/難し「そうな」ものが出てくると「後で読む」を志して二度と読まないのでそういう人騙しにも出来そうですよね。&lt;/p&gt;
&lt;p&gt;まぁ別に騙してないんですけど・・・気持ちの問題があるとするならばそういうの抑えるのにも一役買うんじゃないでしょうか。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397189809"&gt;&lt;a href="http://twitter.com/ranha/status/3397189809"&gt;http://twitter.com/ranha/status/3397189809&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;それはまぁ取りあえず&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397376357"&gt;&lt;a href="http://twitter.com/ranha/status/3397376357"&gt;http://twitter.com/ranha/status/3397376357&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;とかで良いと思います。&lt;/p&gt;

&lt;p&gt;そして何よりも&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397318132"&gt;&lt;a href="http://twitter.com/ranha/status/3397318132"&gt;http://twitter.com/ranha/status/3397318132&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;コレ！！コレだよコレ！！&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397456341"&gt;&lt;a href="http://twitter.com/ranha/status/3397456341"&gt;http://twitter.com/ranha/status/3397456341&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;分かんにゃい・・・。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/m0h1can/status/3397390526"&gt;&lt;a href="http://twitter.com/m0h1can/status/3397390526"&gt;http://twitter.com/m0h1can/status/3397390526&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この成果をなんとかして育成シミュレーション、恋愛アドベンチャー型言語に活かしたい。&lt;/p&gt;
&lt;p&gt;でもそういうのは割と冗談じゃなくて、現場の方が苦しいよー苦しいよーって成った時に苦しい部分を解決したいだろうから、という意味で大体良いものが出来る時もあるんじゃないかなーと。&lt;/p&gt;
&lt;p&gt;基礎研究所だとしかしながら結局偉そうな人が来るのでうーんむみたいな。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/m0h1can/status/3397441968"&gt;&lt;a href="http://twitter.com/m0h1can/status/3397441968"&gt;http://twitter.com/m0h1can/status/3397441968&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;はい。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3397579051"&gt;&lt;a href="http://twitter.com/ranha/status/3397579051"&gt;http://twitter.com/ranha/status/3397579051&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これはホントやりたいです。&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://tell.tumblr.com/post/233575532</link><guid>http://tell.tumblr.com/post/233575532</guid><pubDate>Thu, 05 Nov 2009 13:39:28 +0900</pubDate></item><item><title>直積を「作る」関手って作れないかな?</title><description>&lt;p&gt;&lt;a href="http://ranha.tumblr.com/post/166478152"&gt;ranha&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;発端&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3318384175"&gt;&lt;a href="http://twitter.com/ranha/status/3318384175"&gt;http://twitter.com/ranha/status/3318384175&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3318729080"&gt;&lt;a href="http://twitter.com/ranha/status/3318729080"&gt;http://twitter.com/ranha/status/3318729080&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この発言は、&lt;/p&gt;
&lt;p&gt;MakeProd :: 圏A → 圏B → 圏AxB(これが直積カテゴリ)&lt;/p&gt;
&lt;p&gt;みたいなMakeProdを作れないかなーという事です。&lt;/p&gt;

&lt;p&gt;これだと、2引数とったり、関手レベルでカリー化出来ないと行けないのでムムム。&lt;/p&gt;

&lt;p&gt;それに対して&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/bonotake/status/3319122903"&gt;&lt;a href="http://twitter.com/bonotake/status/3319122903"&gt;http://twitter.com/bonotake/status/3319122903&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;確かにコレなら！！&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3319488961"&gt;&lt;a href="http://twitter.com/ranha/status/3319488961"&gt;http://twitter.com/ranha/status/3319488961&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ただしこれだと、元々直積したかった圏D,圏Eに加えて、圏Cと圏C→圏Dの関手、圏C→圏Eの関手を作らないといけないので大変そう。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3319828800"&gt;&lt;a href="http://twitter.com/ranha/status/3319828800"&gt;http://twitter.com/ranha/status/3319828800&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3319846689"&gt;&lt;a href="http://twitter.com/ranha/status/3319846689"&gt;http://twitter.com/ranha/status/3319846689&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;「元々直積したかった圏D,圏Eに加えて、圏Cと圏C→圏Dの関手、圏C→圏Eの関手を作らないといけないので大変そう。」でやるとすると、多分こんな感じ?&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/bonotake/status/3319486001"&gt;&lt;a href="http://twitter.com/bonotake/status/3319486001"&gt;http://twitter.com/bonotake/status/3319486001&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これは良く分かりません・・・。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ranha/status/3319802225"&gt;&lt;a href="http://twitter.com/ranha/status/3319802225"&gt;http://twitter.com/ranha/status/3319802225&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/bonotake/status/3319730332"&gt;&lt;a href="http://twitter.com/bonotake/status/3319730332"&gt;http://twitter.com/bonotake/status/3319730332&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2階圏の対象を1階圏として、そうすると射は事実上1階圏から1階圏へ、となりますが、そのとき射って関手になるのかなーとか。&lt;/p&gt;

&lt;p&gt;あと、関手じゃないと実装が書けないみたいなイメージがあるんですけど、そうでも無い?&lt;/p&gt;

&lt;p&gt;Catの関手書く時にしたって、arityは1だからどっちみち同じ問題に遭遇するんでは無かろうか・・・。&lt;/p&gt;

&lt;p&gt;Cat x Cat → Cat　の時は、でも、Cat x Catを「関手に任せるんじゃなくて」「定義に従って手でやれば良い」感じなのかな。でも対象が多く成ると結局定義に従って手でやるとかは無理な気がする。手でやるってその範囲はどこからよ、みたいな・・・。&lt;/p&gt;

&lt;p&gt;Catの「射」として、実装を伴わせた「parametric polymorphism」な射を作って、そいつで「カリー化」すればいけそうな雰囲気ですけど・・・。&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://tell.tumblr.com/post/233574778</link><guid>http://tell.tumblr.com/post/233574778</guid><pubDate>Thu, 05 Nov 2009 13:38:37 +0900</pubDate></item><item><title>7/16の読みたいものリスト</title><description>&lt;p&gt;&lt;a href="http://ranha.tumblr.com/post/143086509/7-16"&gt;ranha&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;LCF MLについての一冊。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/Edinburgh-LCF-Mechanized-Computation-Computer/dp/3540097244"&gt;&lt;a href="http://www.amazon.com/Edinburgh-LCF-Mechanized-Computation-Computer/dp/3540097244"&gt;http://www.amazon.com/Edinburgh-LCF-Mechanized-Computation-Computer/dp/3540097244&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polymorphic type inference and assignment&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gallium.inria.fr/~xleroy/publi/polymorphic-assignment.pdf"&gt;&lt;a href="http://gallium.inria.fr/~xleroy/publi/polymorphic-assignment.pdf"&gt;http://gallium.inria.fr/~xleroy/publi/polymorphic-assignment.pdf&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“Further reading”&lt;/p&gt;
&lt;p&gt;&lt;a href="http://caml.inria.fr/pub/docs/manual-caml-light/node20.html"&gt;&lt;a href="http://caml.inria.fr/pub/docs/manual-caml-light/node20.html"&gt;http://caml.inria.fr/pub/docs/manual-caml-light/node20.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CAML Primer&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hal.inria.fr/inria-00070045/en/"&gt;&lt;a href="http://hal.inria.fr/inria-00070045/en/"&gt;http://hal.inria.fr/inria-00070045/en/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;全てcamlspotterさん情報&lt;/p&gt;
&lt;p&gt;“Edinburgh-LCF-Mechanized-Computation-Computer”はちょっと大学の演習のからみがあるので優先して読みたいですね。&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://tell.tumblr.com/post/233448363</link><guid>http://tell.tumblr.com/post/233448363</guid><pubDate>Thu, 05 Nov 2009 11:17:35 +0900</pubDate></item><item><title>A new factory has just opened.</title><description>&lt;a href="http://tell.myminicity.com/"&gt;A new factory has just opened.&lt;/a&gt;: &lt;p&gt;A new factory has just opened.&lt;/p&gt;</description><link>http://tell.tumblr.com/post/231259114</link><guid>http://tell.tumblr.com/post/231259114</guid><pubDate>Tue, 03 Nov 2009 09:20:11 +0900</pubDate></item><item><title>The Klein Four Group


Finite Simple Group (of order two)



A...</title><description>&lt;object width="400" height="336"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UTby_e4-Rhg&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UTby_e4-Rhg&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="336" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.kleinfour.com/"&gt;The Klein Four Group&lt;/a&gt;

&lt;h3&gt;
Finite Simple Group (of order two)
&lt;/h3&gt;

&lt;p&gt;
A Klein Four original by Matt Salomone
&lt;/p&gt;

&lt;pre&gt;
The path of love is never smooth
But mine's continuous for you
You're the upper bound in the chains of my heart
You're my Axiom of Choice, you know it's true

But lately our relation's not so well-defined
And I just can't function without you
I'll prove my proposition and I'm sure you'll find
We're a finite simple group of order two

I'm losing my identity
I'm getting tensor every day
And without loss of generality
I will assume that you feel the same way

Since every time I see you, you just quotient out
The faithful image that I map into
But when we're one-to-one you'll see what I'm about
'Cause we're a finite simple group of order two

Our equivalence was stable,
A principal love bundle sitting deep inside
But then you drove a wedge between our two-forms
Now everything is so complexified

When we first met, we simply connected
My heart was open but too dense
Our system was already directed
To have a finite limit, in some sense

I'm living in the kernel of a rank-one map
From my domain, its image looks so blue,
'Cause all I see are zeroes, it's a cruel trap
But we're a finite simple group of order two

I'm not the smoothest operator in my class,
But we're a mirror pair, me and you,
So let's apply forgetful functors to the past
And be a finite simple group, a finite simple group,
Let's be a finite simple group of order two
(Oughter: "Why not three?")

I've proved my proposition now, as you can see,
So let's both be associative and free
And by corollary, this shows you and I to be
Purely inseparable. Q. E. D.
&lt;/pre&gt;

&lt;a href="http://"&gt;Translation in Japanese&lt;/a&gt;
&lt;pre&gt;
愛の道は滑らかじゃない
(でも僕のは君に続いてる
君は僕の心の鎖の上界だ
君は僕の選択公理だ，君はそれが真だと知ってる
 
でも最近僕たちの関係はそんなにwell-definedじゃない
そして僕は君なしに働けない
今から僕が命題を証明すれば君はきっと分かってくれるだろう
僕たちは位数2の有限巡回群なんだ
 
僕は単位元を失ってしまった
僕は毎日テンソルを得ている
そして一般性を失うことなしに
君も同じように感じていると仮定する
 
毎日君に会うと君は割っている
忠実な像で僕が中へ写されるところを
でも僕たちが一対一なら君は僕が何に対応するか分かるだろう
だって僕たちは位数2の有限巡回群だから
 
僕たちの同値性は安定だった，
主ラヴ束は深い奥にあった
でも君は僕たちの間の2-formを仲たがい(drove a wedge)させた
今では全部複素化している
 
僕たちが最初に会ったとき，僕たちは単連結だった
僕の心は開だった(My heart was open)けどdenseすぎた
僕たちの系は向き付けられていた
適当な意味で有限の極限を持つために
 
僕はランク1の写像の核に住んでいる
僕の定義域からの像はブルーだ
なぜなら僕が見るのは全部ゼロで，それは残酷な罠だ
でも僕たちは位数2の有限巡回群だ
 
僕は僕のクラスでは滑らかな作用素でない，
でも僕と君は鏡像の組だ
だから過去に忘却函手を適用しよう
そして有限単純群になろう，有限単純群になろう，
位数2の有限単純群になろう
(Oughter: なんで3じゃないの？)
 
君が見てきたように僕は命題を証明したよ
だから結合的で自由になろう
そうすれば系として，君と僕が
真に分離不能であることが示される．Q.E.D.
&lt;/pre&gt;</description><link>http://tell.tumblr.com/post/231189033</link><guid>http://tell.tumblr.com/post/231189033</guid><pubDate>Tue, 03 Nov 2009 07:58:00 +0900</pubDate></item><item><title>P3のfavスターが良い感じに付いてます．</title><description>&lt;img src="http://14.media.tumblr.com/zKjeCxOBNk063zc7Jhufnsmco1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://sites.google.com/site/peraperaprv/"&gt;P3&lt;/a&gt;のfavスターが良い感じに付いてます．&lt;/p&gt;</description><link>http://tell.tumblr.com/post/78678697</link><guid>http://tell.tumblr.com/post/78678697</guid><pubDate>Mon, 16 Feb 2009 13:05:00 +0900</pubDate></item><item><title>A new inhabitant has come to tell.</title><description>&lt;a href="http://tell.myminicity.com/"&gt;A new inhabitant has come to tell.&lt;/a&gt;: &lt;p&gt;A new inhabitant has come to tell.&lt;/p&gt;</description><link>http://tell.tumblr.com/post/67994696</link><guid>http://tell.tumblr.com/post/67994696</guid><pubDate>Sat, 03 Jan 2009 03:23:23 +0900</pubDate></item><item><title>"
テスト前に講義ノートを売るというビジネスがおもしろい


僕の通う大学は世間の大学の多分に漏れずに授業を聴いている生徒が３割と居ないという感じの大学で、昨日に行われたテストで授業を聴いていなかった生徒..."</title><description>“&lt;h2&gt;
テスト前に講義ノートを売るというビジネスがおもしろい
&lt;/h2&gt;
&lt;p&gt;
僕の通う大学は世間の大学の多分に漏れずに授業を聴いている生徒が３割と居ないという感じの大学で、昨日に行われたテストで授業を聴いていなかった生徒が「授業を聴いていなかったのですが、この問題は授業を聴いていないと解けない問題なのでせめて問題の意味だけでも教えてください」と先生に抗議している感じのなかなかおもしろい学校だ。
&lt;/p&gt;
&lt;p&gt;
そんな僕の大学ではテスト前になると講義ノートが非公式に販売される。事前に、ノートをコピーさせてくれる人には２万円あげるから綺麗にうつしておいてね、みたいな感じのバイトの広告が生徒に配られていて、それを販売しているようだ。これは他の大学でもあるのかはわからないけど、うちの大学では結構あたりまえのことらしく、ほぼ全ての生徒がその事実を認識している。
&lt;/p&gt;
&lt;p&gt;
ところが本日その講義ノート販売に大学が注意を促してきた。内容は、講義ノートのみをたよりに試験を乗り切ろうとする風潮は大学としては好ましくなく、試験は大学での授業への出席を前提とした理解度を総合的にはかるものということと、大学での授業の意味を理解して欲しい、というものだった。
&lt;/p&gt;
&lt;p&gt;
このメールに書かれていることはとてもよく理解できる。この警告文を送る姿勢は大学として素晴らしいと思う。このメールは講義ノートの販売そのものではなくて、講義ノートだけで試験勉強をする、大学における学問の姿勢を問うものなので、少しこのメールの主旨からはずれるかもしれないが、講義ノートの販売は基本的に間違っていないと思う。
&lt;/p&gt;
&lt;p&gt;
そのノートを見るだけで試験を乗り越えられるくらいの学力がつくのならそれは歓迎すべきことだし、もしノートを見ただけで試験を乗り越えられるようなら、授業がその十数枚の紙程度の内容しかなかったということになるか、実力を問うような試験をつくることができなかったことになる。「授業にでている人にだけわかる問題」というのが確かに存在するのだろうけど、それは講義ノートをみればすぐにわかるような単なる合い言葉ではなくて、本来は「授業の内容を理解していれば解ける問題」なので、講義ノートを見ただけでその問題が解けるのであれば授業の内容を理解しているのでやっぱり問題は無い。
&lt;/p&gt;
&lt;p&gt;
大学側が言っている学問に対する姿勢が悪くなる懸念は、大学が授業の本質を問うような試験をするだけで解決できるような気がする。理解してないけど授業には出席していたような学生に単位をあげようと甘く、授業で扱った例題をそのまま出すようであれば、それこそ学問に対する姿勢をおかしくしていしまうのではないかと思う。
&lt;/p&gt;
&lt;p&gt;
講義ノートの販売自体は知識のシェアと学問の補助という点で歓迎すべきことだと思う。ノートや授業で得た知識はシェアするべきだと思っている僕はこのブログに授業内容を書いたりしていた。ノートをネットで公開してシェアしている先輩も居る。だから、大学側が言っているような講義ノートのみで試験に臨むような輩を排除すればこのノート販売はとても有益なものになる。基本的に大学側はこのメールでは、「講義ノートだけで単位をとろうなどと考えていると痛い目にあうよ」という警告をしているみたいなので、こうゆう警告をしているのは本当に素晴らしいことだと思う。大学の対応次第ではなかなか面白いことになりそうだ。
&lt;/p&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://d.hatena.ne.jp/coconutsfine/20080723#1216809258"&gt;テスト前に講義ノートを売るというビジネスがおもしろい # 2008-07-23 - Cheshire　Life&lt;/a&gt;&lt;/em&gt;</description><link>http://tell.tumblr.com/post/43688256</link><guid>http://tell.tumblr.com/post/43688256</guid><pubDate>Sun, 27 Jul 2008 18:30:00 +0900</pubDate></item><item><title>next? prev? new? old? before? after? up? down?</title><description>taizooo:@otsune 日付表示のときのrel-next, rel-prev 逆じゃね? http://otsune.tumblr.com/day/2008/06/13 next は過去に潜るほうじゃね? tumblr的には。 [http://twitter.com/taizooo/statuses/834005903]&lt;br /&gt;&#13;
otsune:@taizooo おれは単純にtumblrテンプレートの{NextPage}にはrel="next"を付けているだけだからtumblr的には正しいnextだよ。人間の感覚としてどうなのよってのは運営者にリクエストするのだ http://twitter.com/taizooo/statuses/834005903 lang:ja [http://twitter.com/otsune/statuses/834013072]&lt;br /&gt;&#13;
taizooo:テンプレがどうかわ、しったこっちゃなくって。そのページの創造主がどのページをnext、prevって決めるかってことがmicroformatsだと理解したんだけど。まさか御大、テンプレを鵜呑みにしたわけじゃあるまいに。まあ SITEINFO でどうにでもなるもんだけんど [http://twitter.com/taizooo/statuses/834026717]&lt;br /&gt;&#13;
otsune:@taizooo いやいやいや、間違ってるのはtumblr.comの{NextPage}というテンプレが展開するリンクなんだから、そこを元から治さないと。rel="next" href="{PrevPage}" なんて気持ち悪いのを許容するってどんだけセンス悪いんだ lang:ja [http://twitter.com/otsune/statuses/834027882]&lt;br /&gt;&#13;
taizooo:運営者だか創造主だかなんだかしらんけど [http://twitter.com/taizooo/statuses/834027991]&lt;br /&gt;&#13;
taizooo:そういえば、はてなダイアリーもそーだった [http://twitter.com/taizooo/statuses/834033377]&lt;br /&gt;&#13;
taizooo:nextLink  	//link[@rel ="prev"] | //a[@rel ="prev"] http://wedata.net/items/700  [http://twitter.com/taizooo/statuses/834035921]&lt;br /&gt;&#13;
taizooo:あらあら御大としたことがセンス、センスなんて有り体な文言をおっしゃって ：p [http://twitter.com/taizooo/statuses/834037838]&lt;br /&gt;&#13;
taizooo:microformatsのbookmarkの意味のことをあーだこーだ言ってたくせに。tumblrのテンプレのnextpageとmicroformatsのrel-nextの意味が違ったってねえー、センス悪くてわるかったなー [http://twitter.com/taizooo/statuses/834054657]&lt;br /&gt;&#13;
taizooo:{NextDayPage}  URL for the "next" day page. http://www.tumblr.com/help/custom_themes  [http://twitter.com/taizooo/statuses/834058096]&lt;br /&gt;&#13;
taizooo:{NextPost}  URL for the "next" (older) post. http://www.tumblr.com/help/custom_themes  [http://twitter.com/taizooo/statuses/834058844]&lt;br /&gt;&#13;
taizooo:{NextPage}  URL for the "next" page (older posts). http://www.tumblr.com/help/custom_themes  [http://twitter.com/taizooo/statuses/834059233]&lt;br /&gt;&#13;
taizooo:センス、扇子、うるさいわー [http://twitter.com/taizooo/statuses/834060971]&lt;br /&gt;&#13;
otsune:@taizooo いや%SCALARという変数名のハッシュとかfloating_pointという変数名のintegerとか無意味に使うのを「センスが無い」って表現するんだよ。芸術性とかの「センスが無い」という表現とはニュアンスちがうっしょ lang:ja [http://twitter.com/otsune/statuses/834404941]&lt;br /&gt;&#13;
otsune:@taizooo そもそも「tumblr的な次のページ」という逆転現象を扱うためにa rel="next" href="{NextPage}"ってマークアップするのはキモいだろ。後でソース読んでも意図が分からないし。 lang:ja [http://twitter.com/otsune/statuses/834463339]&lt;br /&gt;&#13;
otsune:あ、a rel="next" href="{NextPage}"じゃ正しい例だな。a rel="next" href="{PrevPage}"がキモい例だ。 lang:ja [http://twitter.com/otsune/statuses/834465361]&lt;br /&gt;&#13;
taizooo:a rel="next" href="{PreviousDayPage}" [http://twitter.com/taizooo/statuses/834483856]&lt;br /&gt;&#13;
taizooo:snj14の「実はrel-next/rel-prevも嫌いｎ(ry」の意味がなんとなくわかった(気がする) [http://twitter.com/taizooo/statuses/834485258]&lt;br /&gt;&#13;
taizooo:a rel="prev" href="{NextDayPage}" [http://twitter.com/taizooo/statuses/834485815]&lt;br /&gt;&#13;
taizooo:new とか old だったら方向がわかるけど next とか prev とかって主観的なもんでどうとでもとれる。 [http://twitter.com/taizooo/statuses/834489055]&lt;br /&gt;&#13;
taizooo:otsuneはテンプレとかへの記述の気持ち悪さについて言ってて、オレはページ移動の気持ち悪さについて言ってて、 [http://twitter.com/taizooo/statuses/834489850]&lt;br /&gt;&#13;
taizooo:これは交わることがない。 [http://twitter.com/taizooo/statuses/834490029]&lt;br /&gt;&#13;
taizooo:そもそもotsuneのtumblrページなのだからどうしようがotsuneの勝手なのであった。チャンチャン♪ [http://twitter.com/taizooo/statuses/834491594]&lt;br /&gt;&#13;
taizooo:オマケ：あんましセンス、センスって言うと揚げ足とられっゾ :-P eace [http://twitter.com/taizooo/statuses/834492779]&lt;br /&gt;&#13;
kenmat:誰かにとってはそう受け取られるが、別の誰かには違う受け取られ方をする、っていうのは何処かに問題がある。 [http://twitter.com/kenmat/statuses/834511249]&lt;br /&gt;&#13;
kenmat:英語の人でも日本語の人でも子供でもじいさんでも、誰でも見たら解るっていう在り方。日夜それを研究しているひとたちももちろんいるだろう。 [http://twitter.com/kenmat/statuses/834512253]&lt;br /&gt;&#13;
kenmat:だけどむずかしいな。それが解ればもうあれだ。 [http://twitter.com/kenmat/statuses/834512497]&lt;br /&gt;&#13;
snj14:@taizooo rel-next/rel-prevも「次のページ/前のページ」っていう意味しか持ってない．HTMLを書いた人が次と思ったらそのページが次．ただ，それじゃ統一されてなさ過ぎ．てことは，今よりもっと頭の良いAutoPagerizeとか作れないよね． [http://twitter.com/snj14/statuses/834591174]&lt;br /&gt;&#13;
snj14:@taizooo 統一されて無さ過ぎってのは，日付が前のものが「次」なのか後のものが「次」なのか．ほかにも，日付は全然関係なしに文章の内容的な「次」ってのもありえる．全部，rel-nextで表現しちゃう． [http://twitter.com/snj14/statuses/834591905]&lt;br /&gt;&#13;
snj14:@taizooo じゃあ，どうするかってところで，最終的にrel="bookmark origin"(rel-next問題に置き換えるならrel="new older"等)とかどうよ？って言ってたのがこないだのrel-bookmark戦争． [http://twitter.com/snj14/statuses/834592988]&lt;br /&gt;&#13;
snj14:@taizooo 間違えましたrel="next older"です．"new older"ってなんじゃそりゃ． [http://twitter.com/snj14/statuses/834593503]&lt;br /&gt;&#13;
snj14:@taizooo これなら時系列で古い方へAutoPagerizeしたい人も新しい方へAutoPagerizeしたい人も，仕組み的には不可能ではなくなって，後はどういうUIでそれを切り替えるか，とかそういう問題を考えるフェーズに移ることができる． [http://twitter.com/snj14/statuses/834594502]&lt;br /&gt;&#13;
taizooo:@snj14 ああ、その辺りの問題点をねえー、やっと実感として理解できたって感じさあー [http://twitter.com/taizooo/statuses/834613830]&lt;br /&gt;&#13;
taizooo:まあ、そういうことにもおかまいなしにセ☆ン☆ス悪く自分が"next"としたいほうに rel-next しちゃうんだけどね。アハハ [http://twitter.com/taizooo/statuses/834614621]&lt;br /&gt;&#13;
taizooo:そうとう感覚が"Autopagerize"されてて、今から過去に潜っていくのが普通だと思うようになっていることに、ちょっと驚いている [http://twitter.com/taizooo/statuses/834616719]&lt;br /&gt;&#13;
taizooo:おんなじように"j"と"k"で移動する感覚にも、 [http://twitter.com/taizooo/statuses/834617254]&lt;br /&gt;&#13;
taizooo:まだ使うようになってから1年経ってないんだけどね。オレは [http://twitter.com/taizooo/statuses/834617720]</description><link>http://tell.tumblr.com/post/41049046</link><guid>http://tell.tumblr.com/post/41049046</guid><pubDate>Sat, 05 Jul 2008 16:00:33 +0900</pubDate></item><item><title>"俺はネットの一部にある「誰が言ったかが重要じゃない。何を言ったかが重要なんだ」って概念を根本的に信頼していない。それが14年ネット見てきた結論。匿名だってポジショントークは盛んに行われてるし、むしろなぜ..."</title><description>“俺はネットの一部にある「誰が言ったかが重要じゃない。何を言ったかが重要なんだ」って概念を根本的に信頼していない。それが14年ネット見てきた結論。匿名だってポジショントークは盛んに行われてるし、むしろなぜその人がそういうポジショントークをしてるのか辿ることで論点が見えてくるから。”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://twitter.com/tsuda/statuses/838525970"&gt;Twitter / 津田大介: 俺はネットの一部にある「誰が言ったかが重要じゃない。何…&lt;/a&gt;&lt;/em&gt;</description><link>http://tell.tumblr.com/post/39474749</link><guid>http://tell.tumblr.com/post/39474749</guid><pubDate>Mon, 23 Jun 2008 15:52:56 +0900</pubDate></item><item><title>"パソコンに比べてiPhoneは、メモリなどの内部リソースが小さいため、次のような制約があります。

    * デコード後の GIF、PNG、TIFFといった画像は、2Mbytesまで
    *..."</title><description>“&lt;p&gt;パソコンに比べてiPhoneは、メモリなどの内部リソースが小さいため、次のような制約があります。&lt;/p&gt;

&lt;p&gt;    * デコード後の GIF、PNG、TIFFといった画像は、2Mbytesまで&lt;br/&gt;
    * デコード後のJPEG画像は、32Mbytesまで&lt;br/&gt;
    * アニメーションGIFは、2Mbytesまで&lt;br/&gt;
    * HTML、CSS、JavaScriptといった各リソースファイルは、10Mbytesまで&lt;br/&gt;
    * JavaScriptの実行時間は、5秒まで&lt;br/&gt;
    * JavaScriptのアロケーションは、10Mbytesまで&lt;br/&gt;
    * 同時に開けるドキュメントは、8つまで&lt;/p&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;&lt;a href="http://www.atmarkit.co.jp/fwcr/special/iphone/02.html"&gt;iPhone向けWebアプリを作ろう（2/4） − ＠IT&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5秒とか決まってるのはいいな&lt;/p&gt;

&lt;p&gt;(via &lt;a href="http://cxx.tumblr.com/"&gt;cxx&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;(via &lt;a href="http://ayanamist.tumblr.com/"&gt;ayanamist&lt;/a&gt;) (via &lt;a href="http://ichimonji.tumblr.com/"&gt;ichimonji&lt;/a&gt;)&lt;/p&gt; (via &lt;a href="http://otsune.tumblr.com/"&gt;otsune&lt;/a&gt;)&lt;/em&gt;</description><link>http://tell.tumblr.com/post/38800859</link><guid>http://tell.tumblr.com/post/38800859</guid><pubDate>Wed, 18 Jun 2008 06:12:57 +0900</pubDate></item><item><title>"善も悪も人間が人間同士生きていくうえでの決め事として作り上げた仕組みに過ぎないから、善人であるから事故に遭わず息災で長生きし、悪人であるから天罰が下って悔い多き死に至るとは限らない。"</title><description>“善も悪も人間が人間同士生きていくうえでの決め事として作り上げた仕組みに過ぎないから、善人であるから事故に遭わず息災で長生きし、悪人であるから天罰が下って悔い多き死に至るとは限らない。”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://kirik.tea-nifty.com/diary/2008/06/post_25f4.html"&gt;切込隊長BLOG（ブログ）: 人とは、理由もなく生き、理由もなく死ぬものだ&lt;/a&gt; (via &lt;a href="http://moonset.tumblr.com/"&gt;moonset&lt;/a&gt;) (via &lt;a href="http://pinto.tumblr.com/"&gt;pinto&lt;/a&gt;) (via &lt;a href="http://jinakanishi.tumblr.com/"&gt;jinakanishi&lt;/a&gt;) (via &lt;a href="http://otsune.tumblr.com/"&gt;otsune&lt;/a&gt;) (via &lt;a href="http://dump.tumblr.com/"&gt;dump&lt;/a&gt;)&lt;/em&gt;</description><link>http://tell.tumblr.com/post/38800818</link><guid>http://tell.tumblr.com/post/38800818</guid><pubDate>Wed, 18 Jun 2008 06:12:39 +0900</pubDate></item><item><title>"富野監督はお金儲けを是とすべしという意見に同意を示し、「ガンダムのおかげで、この20年、番組作ってるときよりも今のほうが年収がいい。とってもうれしい(笑)」と会場の笑いを誘った。さらに続けて「お金儲けが..."</title><description>“富野監督はお金儲けを是とすべしという意見に同意を示し、「ガンダムのおかげで、この20年、番組作ってるときよりも今のほうが年収がいい。とってもうれしい(笑)」と会場の笑いを誘った。さらに続けて「お金儲けが、なぜ気持ちがいいか。安心を手に入れられるから。嬉しいという感情も、一人だけでうれしがっているよりもずっと大きい。お金が入ってくることは、背後に自分を支援してくれる人たちがいるということであり、社会的に自分がここにいていいという保証になる。自分だけで『やったぜ、うれしい』と思っているのと、第三者に誉められるのは桁が違う。決定的に自分の自信にも繋がります。また、マスターベーションの狭さを実感できるようになるし、生きていくための力になる。一人ぼっちで死ぬんじゃないんだと、安心する感覚に繋がる。ですからお金儲けを目指してください」と述べた。”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://robot.watch.impress.co.jp/cda/news/2008/06/16/1121.html"&gt; 「地球を使いこなすセンス」が求められる工学～「ガンダム」の富野由悠季監督らが東京大学で講演 &lt;/a&gt; (via &lt;a href="http://wideangle.tumblr.com/"&gt;wideangle&lt;/a&gt;) (via &lt;a href="http://do-nothing.tumblr.com/"&gt;do-nothing&lt;/a&gt;) (via &lt;a href="http://pinto.tumblr.com/"&gt;pinto&lt;/a&gt;) (via &lt;a href="http://jinakanishi.tumblr.com/"&gt;jinakanishi&lt;/a&gt;) (via &lt;a href="http://otsune.tumblr.com/"&gt;otsune&lt;/a&gt;)&lt;/em&gt;</description><link>http://tell.tumblr.com/post/38800741</link><guid>http://tell.tumblr.com/post/38800741</guid><pubDate>Wed, 18 Jun 2008 06:12:10 +0900</pubDate></item><item><title>"第一に、意見は大きな声で言え。そして、これが肝心なことだが、誰にでも同じことを言うのだ。誰にでも、だぞ。第二に、意見は会社のためを思って言え。本当に会社のためを思っていった意見ならば、仮に間違えていたと..."</title><description>“第一に、意見は大きな声で言え。そして、これが肝心なことだが、誰にでも同じことを言うのだ。誰にでも、だぞ。第二に、意見は会社のためを思って言え。本当に会社のためを思っていった意見ならば、仮に間違えていたとしても、後から必ず助かる。これは信じて良い。そして、最後には、『こいつは、ちょっとかわいいな』と他人に思わせるような何かがあれば、なおいいな。かわいげというのは大事なもんだぞ”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://blog.windy.ac/2008/05/post_21.html"&gt;今日の井原. - [読書] 転職活動のために読んだ本、６冊　（プレゼント企画もあるよ！）&lt;/a&gt; (via &lt;a href="http://youpy.tumblr.com/"&gt;youpy&lt;/a&gt;) (via &lt;a href="http://sakurasakuras.tumblr.com/"&gt;sakurasakuras&lt;/a&gt;)&lt;/em&gt;</description><link>http://tell.tumblr.com/post/38800195</link><guid>http://tell.tumblr.com/post/38800195</guid><pubDate>Wed, 18 Jun 2008 06:06:05 +0900</pubDate></item><item><title>"
NyARToolkitの高速化メモ


高速化で気がついた事、やった事などのまとめと言うか記録。


Java的な高速化

Javaだからと言う事はないけれど。

やること


new回数を減らす。基..."</title><description>“&lt;h3&gt;
&lt;a href="http://"&gt;NyARToolkitの高速化メモ&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;高速化で気がついた事、やった事などのまとめと言うか記録。&lt;/p&gt;


&lt;h4&gt;Java的な高速化&lt;/h4&gt;

&lt;p&gt;Javaだからと言う事はないけれど。&lt;/p&gt;

&lt;h5&gt;やること&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;new回数を減らす。基本。&lt;/li&gt;
&lt;li&gt;ループ終了条件は定数にする。可能ならデクリメントループにして、0比較にする。何命令か少なくなります。短いループになるほど有効です。&lt;/li&gt;
&lt;li&gt;double演算は出来るだけ減らす。テーブルを使って回数を減らすのが特に有効です。&lt;/li&gt;
&lt;li&gt;配列操作は１次元でする。AALOADよりALOADの方がかなり高速です。&lt;/li&gt;
&lt;li&gt;短いFor文は構造を壊さない程度に展開する。4命令くらい省略できます。&lt;/li&gt;
&lt;li&gt;3回以上アクセスする変数はローカル変数に代入する。GETFIELD命令は遅いので…。&lt;/li&gt;
&lt;li&gt;値コピー回数を減らす。特にdoubleの場合に顕著です。&lt;/li&gt;
&lt;li&gt;intで計算する。shortとbyteはできるだけ避けましょう。I2S命令が1個消えます。&lt;/li&gt;
&lt;li&gt;1処理単位で100回以上呼ばれる関数はインライン展開するか、配列を使ってバッチ処理する。&lt;/li&gt;
&lt;li&gt;最適化できたかは、必ずバイトコードを確認する。微妙な最適化をすると、コンパイラの最適化と干渉して、遅くなる場合があります。&lt;/li&gt;
&lt;li&gt;大きな書換えを伴う最適化は、処理単位をinterfaceで別クラスに切り出して、派生クラスにして切り替えられるようにする。（後でﾆﾔﾆﾔするためにも重要）&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;やったらダメなこと&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;INT演算のテーブル化。レジスタへのヒット率が下がって遅くなる事があります。&lt;/li&gt;
&lt;li&gt;処理フローを著しく壊すような処理の展開。結局遅くなることが多いです。&lt;/li&gt;
&lt;li&gt;最適化のために計算順序を入れ替える。積算除算で桁落ちが起きて結果が変わり、結果比較ができなくなります。&lt;/li&gt;
&lt;li&gt;クラス構造を無視した最適化。プログラムの寿命を縮めます。やるなら処理に最適化したクラス構造を作り直すべきです。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;ARToolkitの高速化&lt;/h4&gt;

&lt;p&gt;オリジナルのARToolkitの高速化ポイント&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;参照ポインタの数が多いです。特にLabering処理の部分に多すぎる気がします。アセンブラに落ちた時に不利になるので、減らした方が早いです。レジスタの多いCPUだと早いのかもしれないけど…。&lt;/li&gt;
&lt;li&gt;重複演算が多い。arTransmatからコールされる関数は演算ループ構造が冗長で、重複演算がかなりあります。この関数下で行われる演算は8割以上double演算なので、テーブルを使って重複演算部分を排除することで、高速化が可能です。&lt;/li&gt;
&lt;li&gt;特に行列関係の演算の時に、ワークメモリのmalloc/allocが大量に行われます。何度も割当てるのは無駄なので、一回割当てたら使いまわすと良いかな？&lt;/li&gt;
&lt;li&gt;画処理用のワークメモリが、静的にどんぶり勘定（超大盛）で取られてるため、メモリの利用効率が極端に良くありません。動的にワークメモリを拡大するシカケを入れると、使用量が1/10くらいに減ります。&lt;/li&gt;
&lt;li&gt;#defineと#ifndef等の静的なパラメータが多数あります。この辺はクラスを使って切り替えるようにすると、見通しが良くなって速度も上がります。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;マトメ&lt;/h4&gt;

&lt;p&gt;ARToolkitの高速化ポイントは、Java化して処理構造を整理した事で見えた問題なので、オリジナルのCコードをそのまま追いかけたとしたら…、多分、気がつかなかったでしょうね。&lt;/p&gt;

&lt;p&gt;とりあえず全部読んで書き直しましたが、未だにオリジナルのコードを安全に高速化できる自信は全くありません。（というか無理です。）&lt;/p&gt;

&lt;p&gt;・・・、想像ですが、現在のNyARToolkitをC++に戻せば、オリジナルの1.5倍以上の演算性能がでるんじゃないかなと思います。&lt;/p&gt;

&lt;p&gt;時間見つけてやってみようかな。&lt;/p&gt;

&lt;div&gt;

&lt;p&gt;&lt;span&gt;kei&lt;/span&gt; &lt;span&gt;2008/04/28 19:05&lt;/span&gt; &lt;span&gt;まだ高速版ためしてませんが、はやそうですね印象にのこった言葉は（後でニヤニヤするためにも重要）ですけどね＾＾

表示したモデルに影が簡単につけれたらいいんじゃね？っておもってそんな物をつくってます。だいたい目処はついたんで高速版導入してソース整理してJavaDoc書いたら（時間掛かりそうだ…）物置におきたいとおもいます。ただ、、、GLSLつかっちゃってるんでOpenGL1.5+拡張環境でないとうごかない気が…いぜんの書き込みで、しのぶさんが１．４と書いてあったしどうしたもんか悩み中…&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;nyatla&lt;/span&gt; &lt;span&gt;2008/04/29 00:16&lt;/span&gt; &lt;span&gt;keiさん

こんばんは。

&gt;まだ高速版ためしてませんが、はやそうですね

今回の高速化版、早いですよ～。そりゃもう見て判るくらいに。でもまあ、ここまできたら、なんとしても性能劣化を10%以下に抑えたいところです。

&gt;印象にのこった言葉は（後でニヤニヤするためにも重要）ですけどね＾＾

自己満足はモチベーション保つのに重要ですからねｗ

&gt;表示したモデルに影が簡単につけれたらいいんじゃね？っておもってそんな物をつくってます。

おお、影あるとリアルに見えるんですよね。楽しみ。

そんなわけで飽きもせずまた最適化の作業に戻ります&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://d.hatena.ne.jp/nyatla/20080428/1209354293#1209354293"&gt;NyARToolkitの高速化メモ - A虎＠Hatena::Diary&lt;/a&gt;&lt;/em&gt;</description><link>http://tell.tumblr.com/post/38800125</link><guid>http://tell.tumblr.com/post/38800125</guid><pubDate>Wed, 18 Jun 2008 06:05:06 +0900</pubDate></item><item><title>"Debian/OpenSSL 騒動の教訓

Lessons from the Debian/OpenSSL Fiasco - research!rsc

Russ Cox による..."</title><description>“&lt;h3&gt;&lt;a href="http://d.hatena.ne.jp/KZR/20080602/p3#p3"&gt;Debian/OpenSSL 騒動の教訓&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://research.swtch.com/2008/05/lessons-from-debianopenssl-fiasco.html"&gt;Lessons from the Debian/OpenSSL Fiasco - research!rsc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Russ Cox による &lt;a href="http://blog.japan.zdnet.com/jla/a/2008/05/debian_ubuntuop.html"&gt;Debian/OpenSSL 騒動&lt;/a&gt;のまとめ。問題の技術的概要と，関連する出来事の経緯について，詳しく解説している。非常に上手くまとめられていて，参考になる。&lt;/p&gt;

&lt;p&gt;ポイントが多すぎて，一言に表すのは難しいかな。ただ，みんながもっと，問題を発見するための&lt;a&gt;努力&lt;/a&gt;と，&lt;b&gt;問題を発見しやすくするための努力&lt;/b&gt;を払っていれば，失敗の連鎖をどこかで食い止めることができたはずなのだけれど……。&lt;/p&gt;

&lt;blockquote&gt;

&lt;p&gt;色々な&lt;a&gt;ブログ&lt;/a&gt;を読むと，問題に関わった人たちの知性が攻撃されているのを目にするだろう。でも，実際のところは，これは知性の失敗ではなくて，&lt;a&gt;プロセス&lt;/a&gt;の失敗なんだ。&lt;a&gt;メンテナー&lt;/a&gt;は自分がその&lt;a&gt;コード&lt;/a&gt;に関して&lt;a&gt;専門家&lt;/a&gt;ではないことを知っていて，専門家に助けを求めた。そして，誤った情報が与えられたんだ。&lt;/p&gt;

&lt;/blockquote&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/KZR/20080602/p3#p3"&gt;Debian/OpenSSL 騒動の教訓 - Radium Software&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“問題を発見しやすくするための努力”ですか．&lt;/p&gt;

&lt;p&gt;私は問題を解決できる方を“ハッカー”．&lt;/p&gt;

&lt;p&gt;問題を発見でき，他人もそれを認知できるものが作れるレベルの方を“ウィザード”を呼ぶことにしています．&lt;/p&gt;

&lt;p&gt;問題を発見するのは難しいし，それができ易いかつ対処し易いようにする努力って，聞いたことが無いとは言わないけど具体的にそれを見たことは余り無い気がする．&lt;/p&gt;&lt;/em&gt;</description><link>http://tell.tumblr.com/post/38525515</link><guid>http://tell.tumblr.com/post/38525515</guid><pubDate>Mon, 16 Jun 2008 04:13:00 +0900</pubDate></item><item><title>A new inhabitant has come to tell.</title><description>&lt;a href="http://tell.myminicity.com/"&gt;A new inhabitant has come to tell.&lt;/a&gt;: &lt;p&gt;A new inhabitant has come to tell.&lt;/p&gt;</description><link>http://tell.tumblr.com/post/37909737</link><guid>http://tell.tumblr.com/post/37909737</guid><pubDate>Wed, 11 Jun 2008 05:36:00 +0900</pubDate></item></channel></rss>
