2011/11/18

Recent entries from same category

  1. Vim で Go 言語を書くために行った引越し作業 2020年度版
  2. Vim をモダンな IDE に変える LSP の設定
  3. ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
  4. VimConf 2019 を終えて
  5. clangd を使う時に便利なコマンド compiledb

この記事見てたら、「vimscriptでも書けるさ!」と悔しくなったので勢いだけで書いた。
Simple Scheme interpreter in Perl - Life is very short

Simple Scheme interpreter in Perl perl , scheme | 21:52 昨日 Brainfuck を書いてみたので、今日は Scheme( Lisp )の 処理...

http://d.hatena.ne.jp/syohex/20111116/1321447925
後悔していない。

mattn/lisper-vim - GitHub

This vim plugin provide lisp environments for vimmers.

https://github.com/mattn/lisper-vim
見ての通り、vimscriptだけでlispエンジンが動きます。syohexさんのはスクリプト的でしたが、autoloadでしかもインスタンスを起こせるのでLISPマシンとして使えます。

使い方は何個かあってまず
:echo lisper#eval('(+ 1 2 3 4 5)')
ワンライナーで書けます。ただこれは毎回エンジンを起動させてるだけです。

次にエンジンを作る方法。
:let engine = lisper#engine()
:echo engine.eval("(+ 1 2 3 4 5)")
15
:echo engine.eval("(+ 1 (length (quote abc)))")
4
一応、エンジン1つに対して環境を一つ持っているので、エンジン2個同士が干渉する事は無い様にしたつもりです。
lambdaも書けるし、defineも出来るので (define myadd (lambda (a b) (+ a b)))
(myadd 10 20)
こんな風にエンジン内に関数作る事も出来ます。

で、やっぱりReplだよねーって事で :LisperRepl
と起動すると、vimのコマンドラインでlispが出来る様になります。楽しいですね!
lisper-vim
良かったら遊んで下さい。lispの仕様はあまり詳しくないので、間違ってたら教えて下さい!

今後はこのlispから別のvimscriptが呼べたら楽しいなーとか思ってます。
Posted at by | Edit