2017-10-07 66 views
-1

你好我在Ocaml函數列表中工作我得到這個錯誤爲什麼?OCaml:列表函數中的錯誤

Error: Syntax error 
# let headOf lst= 
    match lst with 
    |??[ ] -> failwith "harun" 
Warning 3: deprecated: ISO-Latin1 characters in identifiers 
+3

你在這裏粘貼的代碼有兩個問號''''。這很可能是因爲在你的實際代碼中在那個地方有一些相當奇怪的字符。這很可能是您的語法錯誤和關於奇怪字符的警告的來源。 –

+0

不,我沒有寫在它的問號,當我通過另一條線時,它給這個錯誤。 –

+2

問號幾乎肯定是您問題的症狀。你不能提供足夠的信息來幫助更多,對不起。我的建議是從一個新的源文件開始,並確保你的源文件使用了直接的字符編碼。只要非ASCII字符只出現在字符串常量和註釋中,就應該使用UTF-8。你甚至可以嘗試從純ASCII文件開始。 –

回答

0

如果輸入編碼是ISO-LATIN-1,你在做什麼,然後是打字不間斷空格有時。這些是非ASCII字符,看起來像空格,字符代碼爲160.您應該將其全部刪除,並用普通空格替換(字符代碼爲32)。

如果您使用的是輸入系統,有時輸入不間斷空格沒有您的具體要求對他們來說,你應該使用不同的輸入系統與OCaml的工作:-)

更新

實際上,如果我輸入Option-Space(macOS 10.12.4上的iTerm2),則輸入系統會輸入一個不間斷的空格,因此my。它看起來像這樣:

# let f x��= 14;; 
Warning 3: deprecated: ISO-Latin1 characters in identifiers 
Error: Illegal character (\160) 

在我的情況下的解決方案是永遠不會鍵入選項空間。只需鍵入空格(無選項鍵)。