2011-01-03から1日間の記事一覧

Enumerable.SkipとSeq.skip

F#

Enumerable.Skipに相当するものがF#にはないんですね。Seq.skipは件数足りないときに例外なげます。Enumerable.Skip vs Seq.skipに対策方法が書いてあります。Seqという名前で自分のモジュールを作って、そこに関数おくのがわかりやすいかも。あたかも、F#の…

Seq.init と Seq.zip で FizzBuzz

F#

判別共用体とアクティブパターンも使いました。結構すっきり書けました。type FizzBuzz = | Str of string | Num of int[<Test>] let ``fizzbuzz with Seq.init and Seq.zip``() = let (|Incr|) n = n + 1 let create num s = Seq.init 100 (function Incr(n) -> i</test>…

Seq.groupBy と Seq.collect で FizzBuzz

F#

思いつきで試してみたらできました。一度、Seq.groupByで1から100までの数値をグループ分けし、その後でキーと値を入れ替えるような処理をSec.collectで行って、数値でソートして、文字でグループされていたかどうかをパターンマッチングでみて、最後に出力…

Seq.choose と Seq.exists で FizzBuzz

F#

無理やりな感が満載ですが。Seq.chooseで1から100までの数値をシーケンスのグループに分け、そのあとでSeq.existsでそれぞれのグループへの存在チェックをしています。[<Test>] let ``fizzbuzz with Seq.choose``() = let (|Fizz|_|) n = if n % 3 = 0 then Some()</test>…

関数合成 で FizzBuzz

F#

F# User Group - Japanにあるコードを参考にさせてもらいました。 https://groups.google.com/group/fsug-jp/browse_thread/thread/ca53aeedabe0a5c4?hl=ja type FizzBuzz = | Str of string | Num of int[<Test>] let ``fizzbuzz with function composition``() =</test>…