2002-12-26 [長年日記]
λ. [ 昨日は風邪で死んでました。まだしんどい。
λ. @referersのキー
CGI.unescape(ref)をハッシュのキーとして使っているけど、 URI.parse(ref).normalize.to_sを使った方が良いかも知れないとふと思った。
-
CGI.unescapeしてしまうと異なるURLが同一視されてしまう可能性がある。
(例:「http://example.com/?p=;q=%3Bq%3D」と「http://example.com/?p=%3Bq%3D;q=」) - URI.parseは不正なURIに対してURI::InvalidURIErrorを投げるので、 これをチェックして不正なURLを弾ける。
λ. Ruby-CPL (仮称)
CDTの宣言のパーサと各種処理のコードを書いて、CDTを使ってCSLのSignatureを拡張出来るようにした。CDTで定義されるfunctorのvarianceの計算方法は3ヶ月前(2002-09-12)には理解出来てなかったので、ここが理解できたのは割と嬉しい。
conditional equations を抽出する部分は書けていないので、まだCDTから CSL Theory や Free Category を得ることは出来ない。
ただ、CSL Theory や Free Category は、denotationを数学的にきちんと与えるためには必要だけど、プログラミング言語としてのCPLを実現するにはあまり重要ではない気がする。CPLで実際に計算を行う際には、conditional equations ではなくCDTから直接導かれるrewriting ruleを用いるわけだし、それに Free Category の概念が無くても字句的な書き換えだけで済みそうだし……