cvs commit: hugs98/src parser.y

nordland 2001/09/19 14:36:04 PDT Modified files: src parser.y Log: Fixed the incorrect acceptance of rank-2 types like (Ord a => Tree a) -> IO () The parser now insists that such types be explicitly quantified, as in (forall a . Ord a => Tree a) -> IO () This also holds for the (somewhat counterintuitive) syntax for constructors with local existential quantification, i.e., Ord a => Con (Tree a) is banned in favor of forall a . Ord a => Con (Tree a) *Note*, however, that this fix doesn't solve the "rank-2 implicit parameters" problem reported by John Hughes earlier today: foo :: ((?x :: Int) => b) -> Int -> b foo s z = s with ?x = z Was that feature anticipated? In any case, there are two problems that must be solved here: (1) Loosen up the syntax somehow so that local monomorphic contexts are allowed -- perhaps by allowing (forall . (?x :: Int) => b) -> Int -> b (2) Fixing the erroneous unification that John describes. [Who will take the lead and define what all the common Haskell extensions really mean when used in conjunction?] Revision Changes Path 1.23 +3 -4 hugs98/src/parser.y
participants (1)
-
nordland@glass.cse.ogi.edu