2013-09-17 7 views
10

Was sind die Schattenseiten zu ScopedTypeVariables, wenn es irgendwelche gibt? Warum ist es nicht standardmäßig aktiviert? Führt dies zu schlechteren Schlussfolgerungen? Gibt es Grenzfälle, wo es scheitert? Ist es wesentlich schwieriger in GHC zu implementieren?Nachteile zu ScopedTypeVariables

+1

Es ist nicht standardmäßig aus dem gleichen Grund, dass jede andere Erweiterung nicht standardmäßig aktiviert ist - es ist nicht Teil des Haskell-Standards. –

+0

Wenn das der einzige Nachteil für die Erweiterung ist, ändern Sie das bitte in eine Antwort und ich werde es akzeptieren. Ich bin mir bewusst, dass es nicht im Standard ist, aber ich wollte die Frage nicht verzerren. –

+3

Ich kann nur an Vorteile mit 'ScopedTypeVariables' denken, abgesehen von einer leichten Komplizierung des Typprüfers. – augustss

Antwort

8

Es ist nicht standardmäßig aus dem gleichen Grund, dass jede andere Erweiterung nicht standardmäßig aktiviert ist - es ist nicht Teil des Haskell-Standards.

Wie August sagte - das erfordert mehr Logik in der Typüberprüfung, aber ich glaube nicht, dass jemand es als lästig betrachtet.

10

Es ist auch, weil es die Semantik eines Programms (in Kombination mit anderen Erweiterungen) ändert. Betrachten

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

Es kompiliert in Ordnung, aber mit ScopedTypeVariables es nicht selbst zu kompilieren.