Mac de F#
ノブトラダムスの導きで
F# Advent Calendar jp 2010
に参加することになりました。
http://cielquis.net/advent-calendar/fs-jp-2010.html
というわけでまずはF#を動かすとこから始めてみる
(1)パッケージでのインストール
ぐぐってみるとこのへんが簡単そうだった
http://fsxplat.codeplex.com/releases/view/55463
Mac installer
application, 3697K, uploaded Nov 13 - 289 downloads
なんだパッケージあんじゃんーと思いながらダウンロード
http://fsxplat.codeplex.com/wikipage?title=installation%20instructions&referringTitle=Home
をみてインストールすれとあったけど、ダブルクリックだけだから余裕です
↓
取り付くしまのない「エラーが発生しました」のメッセージ。
潔くあきらめて別の手段にする。
(2)MacPortsでのインストール
MacPortsでも入るらしいのでTRY
http://distfiles.macports.org/MacPorts/
$ sudo port install fsharp
Password:
—-> Computing dependencies for fsharp
—-> Dependencies to be installed: mono gawk gettext expat libiconv gperf ncurses ncursesw glib2 autoconf help2man p5-locale-gettext perl5 perl5.8 m4 automake dbus libtool pkgconfig zlib libgdiplus cairo fontconfig freetype libpixman libpng xrender xorg-libX11 xorg-bigreqsproto xorg-inputproto xorg-kbproto xorg-libXau xorg-xproto xorg-libXdmcp xorg-libxcb python26 bzip2 db46 gdbm openssl readline sqlite3 xorg-libpthread-stubs xorg-xcb-proto libxml2 xorg-util-macros xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-renderproto giflib xorg-libsm xorg-libice jpeg libexif tiff
依存関係の大盤振る舞いや!
当然のごとくおわらねぇ…
てかpythonとかperlもいるんですか??
外出先でイモバ環境だったのがさらに災いし
一時間半たっても終わらない。
さんざん待って終わったので動作確認する
(3)F#と戯れる。
fsi —no-gui でインタプリタ
fscp でコンパイル
$vi hello.fs
printf “Hello, World!\n”
$fscp hello.fs
$mono hello.exe
Hello, World!
動いた。
Hakell触ってたときにクイックソートのアルゴリズムを1行で表現したのに感銘を受けたのが、強く記憶に残っていたので、クイックソートを動かしてみる。
$vi qsort.fs
let rec qsort = function
| [] -> []
| h::t -> qsort [for x in t when x < h -> x] @[h] @ qsort [for x in t when h <= x -> x];;
let li = [6; 4; 2; 7; 3; 1; 5];;
let arr = qsort li;;
printfn “%A” arr;;
$ fscp qsort.hs
$ mono qsort.exe
[1; 2; 3; 4; 5; 6; 7]
クイックソートも3行、アルゴ部分はまぁ1行で書けて動いたよ!
というわけでMacでF#が動きました。