2017-10-07 68 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) 

在我的情况下的解决方案是永远不会键入选项空间。只需键入空格(无选项键)。