我想创建一个函数foo
,它获取函数f
和字符串s
。
该函数将函数f
应用于s
并返回数组的长度:
let foo (f : (`a -> `b[])) (s : string) =
let attrs = f s
attrs.Length
F#编译器并不知道所有f
函数都返回某个数组。
如何将提示提供给编译器?
答案 0 :(得分:4)
据我所知,您的代码段唯一的问题是反引号(通用类型名称中的`
)应该只是一个引号:
let foo (f : ('a -> 'b[])) (s : string) =
let attrs = f s
attrs.Length
另一个小问题是,以f
为参数调用s
会将'a
类型限制为string
,但这是一个单独的问题。