2015-08-25 9 views
5

ich parse error on input ‘where’ bekommen, wenn Sie das folgende Beispiel in GHC 7.10.2 versuchen:ghc 7.10.2 Typ Familien Erweiterung funktioniert nicht

{-# LANGUAGE TypeFamilies #-} 

type family F a :: * 
type instance where 
    F (Maybe Int) = Int 
    F (Maybe Bool) = Bool 
    F (Maybe a) = String 

Same question was asked two years ago about GHC 7.4.2.

Ich verwendete type families in Ordnung mit GHC 7.6. * (Kann letzte Zahl nicht erinnern) in diesem Jahr. Ist es ein Problem mit GHC 7.10.2?

Gemäß the User's Guide sind Typenfamilien verfügbar.

Mein GHC 7.10.2 und cabal 1.22.6.0 wurden von this PPA installiert.

+0

möglich Duplikate [Typ Familien Erweiterung nicht wie beschrieben funktionieren] (http://stackoverflow.com/questions/16338175/type-families-extension-does-not-work-as- beschrieben) – Bakuriu

Antwort

8

Sie können die Familiensyntax vom Typ "Öffnen" und "Schließen" nicht kombinieren, und ich bin mir nicht sicher, woher Sie diese Idee bekommen. Die korrekte Syntax ist

type family F a :: * where 
    F (Maybe Int) = Int 
    F (Maybe Bool) = Bool 
    F (Maybe a) = String 
+0

In der Tat, danke :) – wowofbob

+2

Anscheinend wurde die OP-Syntax * für eine Weile implementiert (in HEAD, keine veröffentlichte Version), aber [technische Probleme] (https://ghc.haskell.org/trac/ghc/ wiki/NewAxioms/ClosedTypeFamilies) führte dazu, dass es zurückgezogen und durch die [aktuelle geschlossene Familienversion] ersetzt wurde (https://ghc.haskell.org/trac/ghc/wiki/NewAxioms). –