Функции типа F # и атрибут [<GeneralizableValue>] - PullRequest
4 голосов
/ 19 октября 2010

В чем разница между этими двумя функциями типа F #:

let defaultInstance1<'a when 'a:(new: unit->'a)> = new 'a()

[<GeneralizableValue>]
let defaultInstance2<'a when 'a:(new: unit->'a)> = new 'a()

Ответы [ 2 ]

7 голосов
/ 19 октября 2010

Вот хороший блог:

http://blogs.msdn.com/b/mulambda/archive/2010/05/01/value-restriction-in-f.aspx

Требуется немного чтения, чтобы добраться до части GeneralizableValue, но если вы туда попадете, я думаю, вы пойметеЭто.:)

4 голосов
/ 19 октября 2010
let defaultInstance1<'a when 'a:(new: unit->'a)> = new 'a()

[<GeneralizableValue>]
let defaultInstance2<'a when 'a:(new: unit->'a)> = new 'a()

let x1 = defaultInstance1 // value restriction
let x2 = defaultInstance2
...