F#

F#でテトリスを作ってみた

※ [2007.10.29] 画像載せました&ちょっと追記 ダウンロードはこちら。 http://www.geocities.jp/u_1roh/software/tetris_by_fsharp.zip ソースはこちら。 いまいち F# らしいコードになっていない気がする。誰か添削してくれるといいのに。 #light open Sys…

パイプ演算子 |> (F#)

この演算子はイイ!UNIX系のコマンドは、以下のようにパイプで連結して使われることがよくある。 % ls | grep hogeこれと同じようなことがF#の関数呼び出しで出来るのだ。 #light let numbers = [ 1; 4; 2; 5; 2; 6; 9] List.iter (fun x -> printfn "%i" x)…

F#から.NETライブラリの呼び出し(F#)

F#は.NETの上で動作する。だから.NETの強力なライブラリにアクセスが出来る。 static 関数を呼び出す #light open System Console.WriteLine( "Hello {0} libraries.", ".NET" ) FileInfo クラスを使う #light open System.IO let file = new FileInfo( "tes…

命令型プログラミング(F#)

F# はマルチパラダイム言語だ。次の3つのパラダイムをサポートしている。 関数型プログラミング (functional programming) 命令型プログラミング (imperative programming) オブジェクト指向プログラミング (object-oriented programming) ここでは命令型プ…

union type (F#)

"Foundations of F#" には "union type" って書いてあるんだけど、日本語訳すると何になるんだろう? (* ジャンケン型 列挙型(enum)のように定義できる *) type Janken = Goo | Choki | Pah let janken = Choki printfn "%A" janken // "Choki" と表示 (* …

タプル型、レコード型 (F#)

タプル型の定義とか、レコード型の定義とか。 (* タプル値を定義 *) let tup = (100, "hello") (* タプルから要素を取得 *) let num, str = tup printfn "num = %d, str = %s" num str (* タプル型をプリントする関数 (引数 : 型 * 型) で引数にタプル型を指…

リスト (F#)

関数型言語では特に重要なリスト構造。再帰呼び出しを使って操作するところがミソかな。 (* リストの定義 このように :: でつなげて定義 *) let sample1 = "one" :: "two" :: "three" :: "four" :: [] printfn "%A" sample1 (* カッコを丁寧に付けるとこうな…

関数とか演算子とか (F#)

(* anonymous function いわゆるラムダ式 *) printfn "1 + 2 = %d" ((fun x y -> x + y) 1 2) (* function キーワードによるラムダ式 - function は引数を1つしか持てない - 引数を2つ以上使いたいときは次のようにつなげる - 普通は function ではなくて fu…

識別子とか値とか関数とか (F#)

引き続きF#メモ。 #light (* let キーワードで識別子を設定 - 識別子(identifier) != 変数(variable) - 識別子は値の変更は不可(再定義が出来る場合もある。後述) *) let hello = "Hello" // hello という識別子を定義 printfn "%s" hello // コンソール出…

コメント、コンソール出力 (F#)

F# 勉強中。ちょこちょこメモしていこうかと。 とりあえず簡単なコンソール出力から。 #light // 一行コメント (* 複数行コメント (* コメントの入れ子も出来る *) *) // C言語ライクな printf 文が使える printf "hello printf\n" // printfn を使えば最後…

関数型プログラミングに挑戦してみます

いつからだろう。「何を作るかが大事であって、プログラミング言語は何を使っても同じ。」なんて思い始めたのは。 僕はPaul Grahamのこの記事を読んで、その考えを改めた。 まず、思いっきり物議を醸しそうな発言から始めよう。プログラミング言語は、その力…