2011-01-03から1日間の記事一覧
Enumerable.Skipに相当するものがF#にはないんですね。Seq.skipは件数足りないときに例外なげます。Enumerable.Skip vs Seq.skipに対策方法が書いてあります。Seqという名前で自分のモジュールを作って、そこに関数おくのがわかりやすいかも。あたかも、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で1から100までの数値をグループ分けし、その後でキーと値を入れ替えるような処理をSec.collectで行って、数値でソートして、文字でグループされていたかどうかをパターンマッチングでみて、最後に出力…
無理やりな感が満載ですが。Seq.chooseで1から100までの数値をシーケンスのグループに分け、そのあとでSeq.existsでそれぞれのグループへの存在チェックをしています。[<Test>] let ``fizzbuzz with Seq.choose``() = let (|Fizz|_|) n = if n % 3 = 0 then Some()</test>…
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>…