ledit

OCamlの対話環境でヒストリー機能とか色々使いたくなったのでleditを入れる。 ledit-1.11.tar.gz を落としてmake…すればいいはずなのだが、 $ make camlp4r pa_extend.cmo q_MLast.cmo pa_local.ml -o pa_local.ppo File "pa_local.ml", line 34, characters…

ややこしい名前

$ google-count -q のだめ{カンター,カウンター,カレンダー}{ビレ,ビル,ピレ,ピル} google-count 4360000 のだめカンタービレ 539 のだめカンタービル 577 のだめカンターピレ 6 のだめカンターピル 109 のだめカウンタービレ 3 のだめカウンタービル 0 のだ…

Obj

Objヤバイ # type foo = { count : int };; type foo = { count : int; } # let x = { count = 4 };; val x : foo = {count = 4} # Obj.set_field (Obj.repr x) 0 (Obj.repr 8);; - : unit = () # x;; - : foo = {count = 8}うぎゃ。Obj.set_field (Obj.repr…

Firefox 2.0

かなり速くなってる。すげー

ocamlyaccってocamllexと一緒に使わなきゃいけないんだろうか。lexerは手で書きたいとか思ったりしたらどうするんだろう。うーむ。

うわ

かなり遅くなってる。メソッド一つ増やしたからか。

続き

昨日のは「まだマッチしていない」時と「マッチしなかった」時を区別できていなかった。 修正。

Packrat Parsing

Packrat Parsingの論文の最初だけ読んだ。例がHaskellで書いてあっていまいちよく分からない…。遅延評価に慣れてないしなあ。 それでもArithPackrat.hsをなんとか解読してRubyで書き直してみた。 一応ちゃんと動いてるみたいだが、これがPackrat Parsingにな…

ううむ

これだと必要なDerivをコンストラクタで全部作ってるから微妙に違う気がする。

ブックストッパー

本のページを開いたまま固定するための道具。 今まで爪切りで本を押さえていたが、ちょっと欲しくなった。

mapPartial

RubyにSMLのList.mapPartialに相当するものって無いのかな? module Enumerable def map_partial(&block) block ||= lambda{|x| x} res = [] each{| v | elm = block.call(v) res.push(elm) if elm } res end end [1,2,nil,3,6,nil,8].map_partial{| i | i &&…

特定の文字列が含まれていない行にマッチする正規表現

まず、文字列hogeが含まれている行にマッチする正規表現は、 \v^.*hoge.*$でOK。 それで、含まれていない行にマッチさせたいのだから、 \v^(.*hoge.*)@!$や \v(^.*hoge.*$)@!としたくなるが、うまくいかない。@!は幅を持たないからだ。 だから、 \v(^.*hoge)…

MatchParen

vim

vim7.0から、カーソルが括弧の上にあるときに対応する括弧をハイライトしてくれる機能がついた。これは非常に便利なのだが、ウィンドウを移動してもハイライトが残ってしまうのが気になる。plugin/matchparen.vim を修正すればよさそう。 --- matchparen.vim…

info

vim

infoなんて嫌いだー。あんな変なキーバインドなんて使いたくない。。。 と思っていたら、vimからinfoを利用できるプラグインを発見。 http://www.vim.org/scripts/script.php?script_id=21 おお、これは便利だ。快適に見れる。 しかし、終了時に "no write s…

少女貴族

この地上にviが消えれば生きられない私たち〜

Vimの正規表現

vim

Vimの正規表現が強力。 \%V ヴィジュアルエリアにマッチ。例えば \%Vhoge ってすると、ヴィジュアルエリア内のhogeにマッチ。 \%# 現在のカーソル位置にマッチ。 \%12l 特定の行にマッチ。 \%<13l 特定の行より前にマッチ。 \%>14l 特定の行より後にマッチ。…

String#replace

JavaScriptのString#replaceについてメモ。 String#replaceは第2引数に関数が使える。例:単語をその文字数に置き換える。 "Time is money".replace(/\w+/g,function(str){ return str.length.toString(); });結果 4 2 5正規表現中の()の数をnとすると、第2引…

JavaScript/Migemo

http://oldriver.org/jsmigemo/を使ってみる。 なんかエラーが出るので、見てみると俺が別のところで Array.prototype.each = function(v){...とかしていたので、for inでまずいことになっていた。 適当に修正したら動いたが、こういう時for inは使って欲し…