在执行runhaskell时,字符'\ DEL'处的词法错误

dop*_*man 1 haskell ghc runhaskell

继承我的代码:

factorial :: Integer -> Integer
factorial n = product [1..n]

main = print(factorial 50)
Run Code Online (Sandbox Code Playgroud)

我没有编译任何错误,但是当我运行编译的代码时

runhaskell test
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

test:1:1: lexical error at character '\DEL'
Run Code Online (Sandbox Code Playgroud)

是什么造成的?我该如何解决这个问题?

更新

我做了一个文件的hexdump:

$ hexdump -x test.hs
Run Code Online (Sandbox Code Playgroud)

得到了

0000000    6166    7463    726f    6169    206c    3a3a    4920    746e
0000010    6765    7265    2d20    203e    6e49    6574    6567    0a72
0000020    6166    7463    726f    6169    206c    206e    203d    7270
0000030    646f    6375    2074    315b    2e2e    5d6e    6d0a    6961
0000040    206e    203d    7270    6e69    2874    6166    7463    726f
0000050    6169    206c    3035    0029                                
0000057
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 8

确保您使用runhaskell的是文件test.hs而不是编译的二进制文件test.

如果你曾经使用类似的东西ghc创建一个可执行文件,你可以直接运行它,例如:

./test
Run Code Online (Sandbox Code Playgroud)

请注意,test对于可执行文件来说,这可能不是一个好名字,因为它是某些shell上的内置命令,当我的test可执行文件似乎没有按照我想要的方式执行时,它会让我感到烦恼:-)