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 "距離 %f";;

--> 'C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\System.Drawing.dll' を参照しました

距離 2.828427

val len : System.Drawing.PointF -> System.Drawing.PointF -> float32

> 

いちいち PointF のインスタンスが必要になるのは使いにくい気も……あっタプルでいいのか!

> // R = √(x1 - x0)^2 + (y1 - y0)^2

let len (x0 : float , y0 : float) (x1 : float, y1 : float) =
    sqrt <| (x1 - x0) + (y1 - y0) 

len (2., 5.) (5., 10.)
|> printfn "距離 %f";;
距離 2.828427

val len : float * float -> float * float -> float
> 

すっきり。