2015-08-25 17 views
5

che sto ricevendo parse error on input ‘where’ quando si cerca il seguente esempio in GHC 7.10.2:GHC 7.10.2 tipo di estensione famiglie non funziona

{-# 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.

Ho usato famiglie di tipo soddisfacenti con GHC 7.6. * (Non ricordo l'ultima cifra) quest'anno. È un problema con GHC 7.10.2?

In base allo standard the User's Guide, sono disponibili famiglie di tipi.

My GHC 7.10.2 e cabal 1.22.6.0 dove installato da this PPA.

+0

possibile duplicato del [Famiglie tipo di estensione non funziona come descritto] (http://stackoverflow.com/questions/16338175/type-families-extension-does-not-work-as- descritto) – Bakuriu

risposta

8

Non è possibile combinare la sintassi familiare di tipo aperto e chiuso come questo, e non sono sicuro da dove si stia prendendo l'idea. La sintassi corretta è

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

Infatti, grazie :) – wowofbob

+2

Apparentemente la sintassi OP * è stata * implementata per un po '(in HEAD, non qualsiasi versione rilasciata), ma [problemi tecnici] (https://ghc.haskell.org/trac/ghc/ wiki/NewAxioms/ClosedTypeFamilies) lo hanno portato a essere ritirato e sostituito dalla [solo versione corrente del tipo di famiglia chiusa] (https://ghc.haskell.org/trac/ghc/wiki/NewAxioms). –

Problemi correlati