Попытка получить F # ближайшую пару, работающую из примера F # на www.rosettacode.org/wiki - PullRequest
0 голосов
/ 04 ноября 2010
// F# Brute force: 
let closest_pairs  (xys: Point []) =
  let n = xys.Length  
  seq { for i in 0..n-2 do
          for j in i+1..n-1 do            
          yield xys.[i], xys.[j] }
   |>  Seq.minBy (fun (p0, p1) -> (p1 - p0).LengthSquared)

closest_pairs  [|Point(0.0, 0.0); Point(1.0, 0.0); Point (2.0, 2.0)|]

Несоответствие ограничения типа. Тип Точка
не совместим с типом Размер
Тип «Точка» не совместим с типом «Размер»

Также введите проблемы с int v float

F # 2.0, .NET 4, VS 2010

1 Ответ

3 голосов
/ 04 ноября 2010

Вам просто нужно сначала определить соответствующий тип Point. Возможно, что-то вроде этого:

type Point(x:float, y) =
  member p.x = x
  member p.y = y
  member p.LengthSquared = x * x + y * y
  static member (-)(p1:Point, p2:Point) = Point(p1.x-p2.x, p1.y-p2.y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...