28

このコード行を Haskell でコンパイルすることはできませんが、私の教授のシステムでは動作します。ghci バージョン 7.6.2 を使用しています。

data Eq a => Shape a = Shape a

より正確には、これは私が得ているエラーです

[1 of 1] Compiling Main             ( test.hs, interpreted )

test.hs:1:6:
Illegal datatype context (use -XDatatypeContexts): Eq a =>
Failed, modules loaded: none.

ここでの間違いは何ですか?

ありがとう

4

3 に答える 3

7

エラーメッセージの内容は明らかだと思います。そのための拡張機能が必要です。

{-# LANGUAGE DatatypeContexts #-}
data Eq a => Foo a = Foo a

この拡張機能はデフォルトでオンになっていましたが、ghc 7.6 から開始されましたが、その使用法は非推奨と見なされ、将来削除される予定です。そのため、教授は古いバージョンの ghc を使用している可能性があります。

于 2013-09-21T16:26:43.223 に答える
3

「なぜ?」を説明するhttps://stackoverflow.com/a/22622591/2008899も参照してください。言語変更の背後にあるものと、データ型コンテキストが提供するはずだったものを実行する GADT の例を示します。

于 2014-03-25T15:30:46.987 に答える