С именем файла cat.cs
, в Linux я получаю
$ ghc cat.cs
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/bin/ld:cat.cs: file format not recognized; treating as linker script
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/bin/ld:cat.cs:1: syntax error
Так что, действительно, поскольку GHC не знает, как обрабатывать .cs
файлы, он передает их gcc для компоновки, gcc тоже не знает, поэтому возвращается к рассмотрению его как сценария компоновщика, который из Конечно, не получается так хорошо.
Но вы можете сказать GHC, что он должен обрабатывать любой файл, который вы ему даете, как, например, .hs
файл,
$ ghc -x hs cat.cs
[1 of 1] Compiling Main ( cat.cs, cat.o )
Linking cat ...
runghc
с другой стороны, не имеет значения, как называется файл, он пытается интерпретировать файл как обычный источник на Haskell, за исключением случаев, когда он имеет расширение .lhs
, затем он пытается интерпретировать его как грамотный Haskell. .