2013-09-17 8 views
10

Quali sono i lati negativi di ScopedTypeVariables, se ce ne sono? Perché non è attivo per impostazione predefinita? Porta a inferenza peggiore? Ci sono casi limite dove fallisce? È molto più difficile da implementare in GHC?Aspetti negativi per ScopedTypeVariables

+1

Non è attivo per impostazione predefinita per lo stesso motivo per cui ogni altra estensione non è attiva per impostazione predefinita - non fa parte dello standard Haskell. –

+0

Se questo è l'unico svantaggio per l'estensione, si prega di cambiare questo ad una risposta e accetterò. Sono consapevole che non è nello standard, ma non volevo distorcere la domanda. –

+3

Posso solo pensare a dei vantaggi con "ScopedTypeVariables", ad eccezione di una leggera complicazione del type checker. – augustss

risposta

8

Non è attivo per impostazione predefinita per lo stesso motivo per cui ogni altra estensione non è attiva per impostazione predefinita - non fa parte dello standard Haskell.

Come dicevano gli augusti, questo richiede più logica nel correttore di tipi, ma non penso che nessuno lo consideri gravoso.

10

È anche perché cambia la semantica di un programma (combinato con altre estensioni). Considerare

{-# LANGUAGE RankNTypes #-} 
foo :: forall a . (a -> a) -> (a -> a) 
foo = bar 
    where 
    bar :: a -> a 
    bar = id 

Si compila bene, ma con ScopedTypeVariables ancora non riesce a compilare.