quickrun.vim で Haskell の簡易対話式インタプリタコマンドを定義する

Haskell で対話式インタプリタを使用する場合 ghci を使うのが便利なのですが、起動するのが手間なので quickrun.vim を使用して簡易的なコマンドを定義してみました。

[コード]

" 実行結果をバッファで開く
command! -nargs=1 QuickHaskell :execute ":QuickRun haskell -outputter buffer -src 'main = putStrLn $ show $ ".<f-args>."'"

" バッファではなくてコマンドラインに直接出力して欲しい場合はこちらを使用
" command_line {{{
let s:outputter = quickrun#outputter#buffered#new()
let s:outputter.name = "command_line"
let s:outputter.kind = "outputter"

function! s:outputter.finish(session)
    echo self._result
endfunction
call quickrun#module#register(s:outputter, 1)
unlet s:outputter
" }}}

" command! -nargs=1 QuickHaskell :execute ":QuickRun haskell -outputter command_line -src 'main = putStrLn $ show $ ".<f-args>."'"

[使い方]

:QuickHaskell map (3 +) [1..5]

[出力]

[4,5,6,7,8]


quickrun.vim ではコマンドの呼び出し時にソースコードを渡して実行する事が出来るのでそれを利用しています。
Haskell のコードは putStrLn で出力を行なっているだけなので ghci ほど使い勝手はよくないと思いますが、サッと使う分には便利かなーと。
コマンドラインで関数名の補完とかも出来ればよさげ。


今回は Haskell を使用しましたが、別に Python だろうが Ruby だろうが C++ だろうが関係なく使用することが出来るので好きな言語で好きな風に定義すればいいと思います。
quickrun.vim 便利ですね。