Unitled

Your awesome Tagline

0 notes

Mac de F#

ノブトラダムスの導きで

F# Advent Calendar jp 2010

に参加することになりました。

http://cielquis.net/advent-calendar/fs-jp-2010.html

http://atnd.org/events/10685

というわけでまずは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#が動きました。