如何将函数转换为使用正向合成而不是管道转发运算符?

时间:2014-04-21 16:14:20

标签: f#

我正在尝试使用管道转发运算符转换函数以使用正向合成。

let four_digit_number_has_all_different_digits digits = 
    digits
    |> Seq.distinct 
    |> Seq.length 
    |> (=) 4

这是我尝试转换它 -

let four_digit_number_has_all_different_digits = 
    Seq.distinct 
    >> Seq.length 
    >> (=) 4

FSI给我这个错误 -

error FS0030: Value restriction. The value 'four_digit_number_has_all_different_digits'     has been inferred to have generic type
    val four_digit_number_has_all_different_digits : ('_a -> bool) when '_a :> seq<'_b> and '_b : equality    
Either make the arguments to 'four_digit_number_has_all_different_digits' explicit or, if you do not intend for it to be generic, add a type annotation.

在一个简单的情况下,类型保持不变,删除初始值并替换|&gt;使用&gt;&gt;作品。我可以或者应该尝试使用前方作曲吗?如果我应该,我该如何纠正错误?

0 个答案:

没有答案