1つのコードはrunghcから機能しますが、ghcコマンドで同じコードをコンパイルできません。どうして?なぜHaskell ghcは動作しませんが、runghcはうまく動作しますか?
以下は私の最小限のコードと環境です。うまく https://gist.github.com/1588756
作品:
$ runghc cat.hs
はコンパイルできません:
$ ghc cat.hs -o cat
のMacBookの空気、最大OS Xユキヒョウ
1つのコードはrunghcから機能しますが、ghcコマンドで同じコードをコンパイルできません。どうして?なぜHaskell ghcは動作しませんが、runghcはうまく動作しますか?
以下は私の最小限のコードと環境です。うまく https://gist.github.com/1588756
作品:
$ runghc cat.hs
はコンパイルできません:
$ ghc cat.hs -o cat
のMacBookの空気、最大OS Xユキヒョウ
.cs
eペーストに表示されるxtensionが間違っています。 ファイル名をcat.hs
に変更しても問題ありません。
このエラーメッセージ:あなたはGHCが処理方法を知らないファイルを渡すとき
ld: warning: ignoring file cat.cs, file was built for unsupported file format
which is not the architecture being linked (i386)
が発生しました。リンカーに直接渡してから、とそれを無視します。それはでも分かりません。 :) GHCがどのように認識していないので、Linux上でのファイル名cat.cs
、と
GHCは、C#のサポートを取得し、少なくともまで...
+1。 –
は、私は、だから、実際に
$ 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
を取得.cs
ファイルを処理すると、リンクするためにgccにそのまま渡されます.gccはどちらも知らないので、リンカスクリプトとして扱うことになりますが、もちろんうまくいきません。
しかし、あなたはそれはあなたが.hs
ファイルを、としてそれを与えると言うものは何でもファイル扱うべきであることをGHCに伝えることができ、ファイルの名前は何気にしない一方、
$ ghc -x hs cat.cs
[1 of 1] Compiling Main (cat.cs, cat.o)
Linking cat ...
runghc
、それはしようとしますファイルが通常のHaskellソースとして解釈されます。ただし、拡張子が.lhs
である場合を除き、それを識字Haskellとして解釈しようとします。
'cat.hs'または' cat.cs'ですか?それを 'cat.hs'と命名し、' ghc cat.hs -o cat'を使って(Linux上で)私のために働きます。 – kennytm
cat.csは私の間違った名前です。 cat.hsの名前を変更してください。ありがとう。脚注のために+1 – sanemat