Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When writing a haskell script, get syntax error near unexpected token

When I write a simple script and pass it to runhaskell, it works fine, but not when I add a shebang and try executing it directly. The script is this:

#!/usr/local/bin/runhaskell

import Data.List (intercalate)

main :: IO ()
main = putStrLn $ intercalate " " $ map show [1..10]

If I try $ runhaskell count.hs bash prints 1 2 3 4 5 6 7 8 9 10 as expected, but if I try ./count.hs I get the following error:

./count.hs: line 3: syntax error near unexpected token `('
./count.hs: line 3: `import Data.List (intercalate)'

Is this error originating in bash or runhaskell? And how do I fix it?

like image 470
Ramith Jayatilleka Avatar asked Mar 18 '23 11:03

Ramith Jayatilleka


1 Answers

Try using:

#!/usr/bin/env runhaskell
...

Note: this is a feature/issue with OSX where shebang interpreters are required to be binaries. See Shebang pointing to script (also having shebang) is effectively ignored for more details.

like image 137
ErikR Avatar answered Apr 08 '23 13:04

ErikR