注释函数的参数

时间:2015-07-07 13:40:22

标签: f#

我想创建一个函数foo,它获取函数f和字符串s。 该函数将函数f应用于s并返回数组的长度:

let foo (f : (`a -> `b[])) (s : string) =
            let attrs  = f s
            attrs.Length

F#编译器并不知道所有f函数都返回某个数组。 如何将提示提供给编译器?

1 个答案:

答案 0 :(得分:4)

据我所知,您的代码段唯一的问题是反引号(通用类型名称中的`)应该只是一个引号:

let foo (f : ('a -> 'b[])) (s : string) =
  let attrs  = f s
  attrs.Length

另一个小问题是,以f为参数调用s会将'a类型限制为string,但这是一个单独的问题。