Visual StudioもMono Developも入れたけど、Vimね、Vim。「Vim」って何回言っても好いですよね。Vim。あーヰ゛ム。
WindowsだとF#のcompilerがFsc.exeの名で入りますが、此れはScalaにもfscと云ふ実行fileが有って、此れとぶつかります。Mac等に合わせてfsharpcの名で呼び出せるやうにします。
@echo off rem fsharpc.bat "C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\Fsc" %*
C#用の設定を真似てF#用の設定を書きます。
cf. 漂流日記 — quickrun.vim の C# 用設定を作った http://sgur.tumblr.com/post/20964378308/quickrun-vim-c
NeoBundleLazy 'kongo2002/fsharp-vim', { \ 'autoload': { \ 'filetypes': ['fsharp'] \ } \ } NeoBundle 'thinca/vim-quickrun' if !exists('g:quickrun_config') let g:quickrun_config = {} endif let g:quickrun_config.fsharp = { \ 'command': 'fsharpc', \ 'runmode': 'simple', \ 'exec': [ \ '%c /nologo --out:"%S:p:r:gs?/?\?.exe" %s:gs?/?\?', \ '"%S:p:r:gs?/?\?.exe" %a', \ ':call delete("%S:p:r.exe")' \ ], \ 'tempfile': '%{tempname()}.fs', \ }
それだけ。
F#の階乗。
module sample
// let fact n =
// let rec factrec n a =
// if n = 0 then
// a
// else
// factrec (n - 1) (n * a)
// factrec n 1
// let fact n =
// let rec factrec n a =
// match n with
// |0 -> a
// |_ -> factrec (n - 1) (n * a)
// factrec n 1
// let fact n =
// let rec factrec n a =
// n |> function
// |0 -> a
// |_ -> factrec (n - 1) (n * a)
// factrec n 1
let fact n =
let rec factrec a =
function
|0 -> a
|n -> factrec (n * a) (n - 1)
factrec 1 n
printf "%d" (fact 7)