Ожидалось, что это выражение будет иметь тип float, но здесь имеет тип 'a *' b - PullRequest
1 голос
/ 06 ноября 2010

Я пробую простой скрипт на F #, который найдет пифагора.

Вот код:

open System

let FindHypotenuse a b =
    Math.Sqrt(Math.Pow(a, 2.0) + Math.Pow(b, 2.0))

FindHypotenuse(2.0, 3.0)

Есть предложения?

1 Ответ

8 голосов
/ 06 ноября 2010

Вы определили функцию для получения двух аргументов с карри, но затем вызвали ее с помощью кортежа. Либо назовите это как

FindHypotenuse 2.0 3.0  // no commas

или переопределить его, чтобы взять кортеж

let FindHypotenuse(a,b) = ...

Обратите внимание, что "'a * 'b" - это имя типа кортежа. Смотри также:

http://lorgonblog.wordpress.com/2008/04/03/f-function-types-fun-with-tuples-and-currying/

...