2009-12-15 39 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