Почему у Bind1 и Bind2 есть разные подписи?Почему разные подписи этих двух методов?
type T() =
let bind(v, f) = v
member self.Bind1 = bind
member self.Bind2(a, b) = bind(a, b)
FSI сообщает их
type T =
class
new : unit -> T
member Bind2 : a:'a * b:'b -> 'a
member Bind1 : (obj * obj -> obj)
end
Это произошло, когда я играл с некоторыми выражениями вычислений и не мог понять, почему я получаю сообщение об ошибке о Bind не определено. Стиль Bind1 не работал, Bind2 сделал, и я не мог понять, почему.
Учитывая те же объекты, они возвращают один и тот же результат:
> q.Bind1(1:>obj,3:>obj);;
val it : obj = 1
> q.Bind2(1:>obj,3:>obj);;
val it : obj = 1
>
Использование Microsoft F # Interactive, (с) Microsoft Corporation, All Rights Reserved F # Version 1.9.7.4, компиляцией для .NET Framework версии v4.0.21006