SG

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#界隈の発展に少しでも役に立てることを…

わんくま勉強会名古屋に行ってきた

今年は1ヶ月に1度は勉強会に参加しよう! ということで、今月は色々あるうちの、わんくま勉強会さんにお邪魔してきました。業務では Android での開発を控えているので、Android 初心者勉強会にも参加したかったのですが、実はノート PC を持っていないとい…

If 演算子でワンライナー

関数型言語を勉強していると、普段メインで使用している VB.NET が如何に長ったらしいかと思い知らされます。パターンマッチにパイプラインにバナナクリップが使いたくなる 2011。 IIf 関数 互換のため、VB.NET にも IIf 関数が存在します。単純な条件分岐を…

組の限界

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

オブジェクト指向の基本原則

オブジェクト指向を仕様で実現することはイカサマである。 オブジェクト指向をしようと思ったときは、モノを作るときではなく壊すときである。 オブジェクト指向は忍耐の賜である。 オブジェクト指向ができたと思ったとき、走るプログラムはなくなっている。…