Humanity

Edit the world by your favorite way

mattnさんが前の記事にコードで回答してくれた

mattn/libcallex-vim · GitHub
こんなリポジトリが作られたので十中八九僕のlibcall()の記事についてだろうと思い、見たら色々驚かされた。


まず引数の受け渡しにJSONを使っていること。この発想はなかった。
ちなみにsyslib.vimとかvimprocでは0xFFを引数の区切りとしたバイト列でやっている。


あとJavaScriptみたいにg:libcallexを名前空間として、関数を追加してるところ。
Vimスクリプトでこんなの見たことなかったので。


あと何よりさらっとインラインアセンブラが使われててふいた。
しかもそれにちゃんと理由があって、アセンブラを使うことによって引数が1個でもn個でも
pushしてcallするという非常に簡潔なコードになっているということ。
前の記事で言ったみたいに何通りも呼び出しのためのコードを書かずに済んでる。libcallex.cxxはわずか59行。


そして何よりtwitterでもlingr*1でも何も言わずに無言でコードだけをgithubに晒すという行動にかなり痺れた。
これぞハッカーって感じがする。
id:mattn++++++*2

*1:そういや最近lingr来てないっすね

*2:mattn.c:1: error: lvalue required as increment operand