c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Vim QuickRun でF# ( fsharp ) をpreviewする

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.vimC# 用設定を作った 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)