2009-12-15 41 views
0

这不起作用... 我得到错误FS0001:类型'字符串'与最后一行的类型'seq' 不兼容。为什么?此F#代码不起作用

let rec Parse (charlist) = 
    match charlist with 
    | head :: tail -> printf "%s " head 
        Parse tail 
    | [] -> None 

Parse (Seq.toList "this is a sentence.") |> ignore 
+2

Seq对一个序列进行操作,字符串不是一个序列。 – Lazarus

+0

有人可以请“编辑”该问题的标题..使其更容易。 thx – bastianneu

+0

@Lazarus - 字符串是一个序列,但它是一个字符序列,其中Parse的推断类型需要一串字符串。 – kvb

回答

2

的问题是,printf "%s " head意味着head必须是string,但实际上你希望它是一个char,所以你会看到Parse已经推断出类型string list -> 'a option。因此,F#预计Seq.toList将应用于string seq,而不是string

简单的修复方法是将打印行改为printf "%c " head