C++のテンプレートでラムダ計算と型推論

C++のテンプレートを, コンパイル時に走るプログラムを記述するための言語だと思うと, この言語はチューリング完全なので, 当然ラムダ計算のインタプリタを実装できるし, そのラムダ計算の項の型を推論することもできる. できるからと言って馬鹿みたいにやってしまったという話. ソースコードは末尾.

続きを読む

Rubyで関数型プログラミング

Rubyでの快適関数型プログラミングライフを追求するあまり, 使えるのか使えないのかよくわからないものを作ってしまったという話. Rubyに不慣れな人や関数型プログラミングに不慣れな人に対して酷なのはまだわかるとしても, C++(というかboostでの関数型プログラミング)に不慣れな人も全力で置いてきぼりにする誰得記事になってしまった......

続きを読む

Vimperatorのコマンドラインで自動的にIMEをオフにする

VimperatorのコマンドラインIMEがオンになっていると, f等でヒントを選択できなくて困ることがある. 32ビットのWindows XPを使っていたときは, ime_controller.jsを使うことでコマンドラインや挿入モードでは自動的にIMEをオフにすることができたけれど, 他の環境でうまく動作しなくて困っていた.

ime_controller.jsが動かないのはFirefoxにおけるCSSのime-modeプロパティの動作環境が限られているのが原因で, Firefoxに限らずたとえばIME and DiMENSiONもうちの環境(Windows 7 64ビット)では動作が不完全(たまにIMEの状態が反映されない, IMEのオン・オフを制御できない)だったりして, IMEをアプリケーションから制御すること自体が難しいらしい*1.

そんな中で, Linux上のVimperatorからSCIMのオン・オフを制御する方法を見つけた:
Linux + Vimperator2.x で hint時にIMをオフにする - 備忘録 beta

これは, IMEのオンとオフのショートカットキーを個別に割り当てておいて, Vimperatorから外部コマンドを呼び出すことでキー入力をエミュレートするという手法. この方法ならWindowsにも対応できることに気づいたので, Vimperatorのプラグインを実装してみた.

*1:IME and DiMENSiONはFlash PlayerのIME制御機能を使っているので, FirefoxだけでなくFlash PlayerもIMEの扱いに難儀している模様

続きを読む

「当選確率が2倍に!」の解釈

MacBook Air 11インチ欲しい!」のキャンペーンページに,

はてなブックマークを使って当選確率UP!

さらに、このキャンペーンページをあなたのはてなブックマークに追加すると、当選確率が2倍に!この機会にぜひはてなブックマークもご利用開始ください。

※ブックマークだけでは応募できません。応募には、ダイアリーの投稿が必須となります。

MacBook Air 11インチ欲しい!

と書いてあって, この意味を誤って解釈したせいで2倍になる理由がわからずに悶々としたので, どう誤ったか, 本来はどういう意味なのかまとめておく.

続きを読む

GNU screenのattach時に環境変数を自動的に引き継ぐ

GNU screenを使っていれば, 作業の途中でログアウトするときにdetachしておいて, 作業を再開するときにattachすれば, 作業途中の端末の状態がそのまま維持されるのでとてもべんり. たとえば, 最初作業していたのとは別のホストからsshでログインしてattachなんてこともできる.

ただし, 最初にscreenを立ち上げたのとは別の端末でattachすると, screenは最初に立ち上げた端末の環境変数のままになっていて, 別のホストから接続していることを認識できず面倒な思いをすることがある. 今回はこれをなんとかしたという話.

続きを読む

オペレータが入力されたら相対行番号を表示

Yokohama.vimの行削除のスライドみてて、オペレータが入力されたら、その行から相対的行番号を一時的に左側に表示すればいいんではないかと思った。Vimスクリプトでそんなことできるかどうかは知らんけど。

https://twitter.com/m2ym/status/25606822787

という話があったので, Vimpulseでやってみた.

続きを読む

マルチモニタ環境でウィンドウが画面外にはみ出すのを防止


最近はディスプレイも安いので, ディスプレイを複数台並べて広い作業環境を確保している人も多いはず. うちの自宅環境も, 24インチワイドディスプレイの隣に21.5インチワイドディスプレイを縦置きにしている. 縦置きする理由は, Webブラウザを最大化表示してなるべくスクロールせずに済ますため, 論文などA4サイズのPDFを1画面におさめるため, など. この環境自体には大変満足しているけれど, 少々変則的な配置のため特定のアプリケーションのウィンドウが画面外に表示されてしまって難儀した. それをなんとかしたという話.

続きを読む