第一问题,你参数用了 「fun _」,我编译器怎么知道你的T是杜蕾斯还是冈本?
如果你指定了fun 的参数类型,譬如 「fun () 」不用加前面Action也可以。
第二个问题:
为什么Action<T>(T->unit)可以转成Action<T>?
这是Action的基本用法、真实用法,参数是个Lambda,试想想,不能转的话F#怎么创建一个可以用的Action?当你用fun 代替Action作为参数传入时候,实际上是编译器自己给你加了Action外壳,不要本末倒置了。
忘了,谢邀。
======================================================================
补充资料:
Lambda 表达式(C# 编程指南)F#里Lambda表达式的文本义应该等价于C#的,编译成FSharpFunc 还是委托,还是Expression,要依赖上下文推断,Action<T>(T->unit) 就是依照这个Lambda产生一个Action的意思。