DeriveFunctorはよく認識された拡張子ですか?陰謀団は混乱しているようです
-
25-09-2019 - |
質問
カバルは私に混合メッセージを与えています。私が言うときます:
Extensions: DeriveFunctor
これは言う:
Warning: Unknown extensions: DeriveFunctor
しかし、私は言うときます:
GHC-Options: -XDeriveFunctor
これは言う:
Warning: Instead of 'ghc-options: -XDeriveFunctor' use 'extensions:
DeriveFunctor'
今の私はちょうど{-# LANGUAGE DeriveFunctor #-}
プラグマを使用するつもりです。
$ cabal --version
cabal-install version 0.8.2
using version 1.8.0.6 of the Cabal library
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.3
$ basename $(mdfind haskell-platform | grep .dmg)
haskell-platform-2010.2.0.0.i386.dmg
解決
Hackageによると、カバル-1.8.0.6 DeriveFunctor
のよう文書には、認識されていません。これは、GHCに比較的新しく追加だし、広い用途を持っていないようですので、私はそれが陰謀団のために見落とされていたであろう驚いていませんよ。これはおそらく陰謀団に対してバグ(機能要求?)として提出する必要があります。
@Tom LokhorstはLANGUAGEプラグマが最良の選択肢であることを右です。その後、すべての拡張機能は、私は頻繁にしたくないすべてのモジュールのためにアクティブになっているので、私は陰謀団の拡張フィールドを使用して好きではありません。
他のヒント
あなたはまだあなたの.cabalファイルでextensions: DeriveFunctor
を使用することができます。はい、それは現在、陰謀団に知られている拡張子はありませんが、あなたはまだそれを使用することができますし、限りコンパイラがそれを認識して、それが動作します。実際、陰謀団は、コンパイラは陰謀団はそれについて自分自身を知らなくても、拡張子を認識しないことを確認します。
モジュールLanguage.Haskell.Extension
における拡張の中央レジストリがあります。このレジストリの目的は、彼らが同じ拡張を実装するときに、異なるコンパイラが同じ名前に同意することができるようです。私たちは、異なるコンパイラの作成者が偶然同じ拡張コンセプトに異なる名前を与えている過去に例がありました。いないすべての拡張子を登録する必要があります。それは、例えば、DPHの拡張子「パー」はまだ登録されていない、まだ非常に実験的拡張を登録しない理にかなっています。 Hackageは、拡張子が配布されたパッケージで使用するのに十分準備ができているならば、登録しても大丈夫ですので、理にかなっているだけ知られている登録済みの拡張を使用するようにアップロードされたすべてのパッケージを必要とします。
この特定のケースでは、GHCの開発者は、拡張子を登録するには忘れているように見えます。
extensions
とdefault-extensions
:これは陰謀団-1.10のようother-extensions
フィールドを2つに分割されていることは注目にも価値があります。このアドレスジョンは以前の動作は、すべての拡張機能は、我々は間違いである認めるすべてのモジュールのためにアクティブであることであることを、彼の答えで指摘していることの問題。 other-extensions
フィールド(すなわちLANGUAGE
プラグマで)一部のモジュールで使用される拡張子がリストされることを可能にします。陰謀団は、最終的には、のそれは、すべてのパッケージの依存関係が表示されていることを必要と同じように、それらがすべてリストされていることを強制されます。言語の依存関係があまりにも依存関係あります。