SG

F#

F# で TFS 上のテスト結果を取得してみた

open System open Microsoft.TeamFoundation.Client open Microsoft.TeamFoundation.TestManagement.Client open Microsoft.TeamFoundation.WorkItemTracking.Client (* プロジェクトの一覧を取得 *) let getTestProjectsByProjectCollection (collection : …

F# で LINQ 入門 Count LongCount

F#

シーケンスの要素数を返します。IEnumerable(Of T) を受け取ったとき、.NET Framework 2.0 の頃では、いちいち List(Of T) に入れて要素数を取得する……なんてアプローチを逐一とる必要がありましたが、このメソッドのおかげで簡単に要素数を調べることが出来…

F# で LINQ 入門 Max Min Sum Average

F#

集計関数は簡単なので一気に紹介してしまいます。Max は最大値、Min は最小値、Sum は合計値、Average は平均値を集計して返します。List モジュールにも同様のメソッドがありますが、F# のために実装された List モジュールは LINQ よりも型に対して厳しい…

F# で LINQ 入門 Take TakeWhile

F#

Take はシーケンスの頭から指定した要素数のデータを取得します。 open System.Linq let age = seq { 10..50 } // なんとかきゅーぶ age.Take(3) |> Seq.iter (printfn "%d歳は小学生です。まったく、小学生は最高だぜ!") // 刺されるのではないか age.Take…

F# で LINQ 入門 Skip SkipWhile

F#

気が付けば年開けてましたね。今年も F#!F#!していきたいと思います。 open System.Linq let actors = ["ドラえもん"; "のび太"; "しずか"; "スネ夫"; "ジャイアン"] let game player = player |> Seq.iter (printfn "%s がゲームをしています") // 悪いな…

F# 3.0 の Query expressions

F#

この記事は F# Advent Calendar 2011 の13回目です。 ←前回 [twitter:@furuya02] さん「F#によるパケットモニタの作成(WinPcap)」 →次回 [twitter:@jsakamoto] さん 「F# で正規表現デザイナ ASP.NET MVC アプリを作成する」 はじめに 今年の Advent Calenda…

F# で LINQ 入門 Distinct

F#

入門と銘打ってますが、入門しているのはわたしです。Distinct メソッドでは、シーケンス内から重複した要素を取り除いたシーケンスを取得します。 open System.Linq let cart = [ "TaPL", 6119; "SICP", 4830; "TaPL", 6220; "SICP", 4830; "TaPL", 6119;] …

F# で LINQ 入門 Where

F#

Where はシーケンスに対し抽出を行います。LINQ の中では最も使用されるメソッドの1つではないでしょうか。 open System.Linq (* 年齢不詳の人物もいるため Option *) type person = { name : string; age : Option<int> } (* 公式より抜粋 http://www.guilty-cro</int>…

F# で LINQ 入門 Single SingleOrDefault

F#

職場でシングルベルを迎えそうなSGです。わたし、ひとりぼっち…… open System.Linq let puellaMagi = ["Mami"] puellaMagi.Single() |> printfn "%s" let newPuellaMagi = "Madoka" :: puellaMagi (* ひとりぼっちじゃないのでエラー newPuellaMagi.Single()…

F# で LINQ 入門 First FirstOrDefault Last LastOrDefault

F#

始まりは肝心ですし終わりが良くなければ失敗だと思います。SGです。インデクサに 0 や hogeList.Count - 1 なんて書いていませんか? 書いてますね、わたしです。 open System.Linq let firstKiss (taste : string[]) = taste.First() |> printfn "初めての…

F# で LINQ 入門 ElementAt ElementAtOrDefault

F#

なかなか .NET Framework 2.0 を抜け出せないまま、LINQ なんて使わないし覚えなくていいや……と思っていたらいつの間にか .NET Framework も 4.5 がリリースされようとしているではありませんか。最近はテストメソッドで LINQ を嗜んでいますが、相変わらず…

2点間の距離を求める

> // R = √(x1 - x0)^2 + (y1 - y0)^2 #r "System.Drawing" open System.Drawing let len (p0 : PointF) (p1 : PointF) = sqrt <| (p1.X - p0.X) + (p1.Y - p0.Y) len (new PointF(X = 2.0f, Y = 5.0F)) (new PointF(X = 5.0f, Y = 10.0F)) |> printfn "距離…

不良率をppm表記する

> // ppm(parts per million) [<Measure>] type ppm // 不良率(ppm)の計算 不良数 * 1000000 / 製造数 // 単位をつけるときは LanguagePrimitives モジュールの関数を使用する let calcPpm manufacture defective = LanguagePrimitives.FloatWithMeasure<ppm> (float defec</ppm></measure>…

絶対値を取得する

絶対値の取得には abs 関数を使用します。 > // 正負の値を持つ組を生成 let value = 3.14, -6.28;; val value : float * float = (3.14, -6.28) > // 正の値から絶対値を取得 value |> fst |> abs;; val it : float = 3.14 > // 負の値から絶対値を取得 val…

データの正負を逆転させる

> let data = 100;; val data : int = 100 > let data' = -data;; val data' : int = -100 > let data'' = (~-) data;; val data'' : int = -100 > data |> (~-);; val it : int = -100 >

四捨五入、切上げ、切捨て

> /// 切り上げ let RoundUp value digits = let pow = pown 10. digits let compute f x = f(x * pow) / pow if value > 0. then compute ceil value else compute floor value /// 切捨て let RoundDown value digits = let pow = pown 10. digits let com…

F# を始めたいあなたへ

窓の雪を頼りに実践F#をこつこつと読んでいました。去年注文して、届くのが楽しみだったのに konozama されましたが、それだけ良書だということに違いない。最近何を注文しても konozama されるけどきっと関係ない。 F#界隈の発展に少しでも役に立てることを…

組の限界

F#

ふと、組(タプル)は、いくつまでの要素を含むことができるんだろう、と疑問が浮かんだので実験してみることにする。恐らく、Action や Func のように、16個までの型パラメータが用意された Tuple がいるんだろうなーと予想。つまり、0 から F までです。タプ…

F#でWindows Phone 7 アプリケーション開発

この記事は F# Advent Calendar jp 2010 : ATND の11回目です。 ことはじめ Advent Calendar に参加するまで、ブログの存在を忘れていました。F# については、週末に少しずつプログラミングF#を読んで、fsi.exe との会話を楽しんでいる程度の駆け出しレベル…

すべてがF#になる

F#

10月も終わり、ようやくひと段落つけそうなところ。まだまだお客さんからの要望は絶えず、とても暇とは呼べない現状ではあるが、ちょっとずつ個人的な勉強をする時間も見えてきた。夏ごろ、オブジェクト指向型開発に関数型の思考を取り入れることをアドバイ…