Using Hugs -98 (Dec. 2001), the following diverges during typechecking: runList :: (?basis_elem :: [a]) => Int -> ((?basis :: [[a]]) => t) -> t runList n x = x with ?basis = allLists n ?basis_elem
Using one pair for (n,x) gives something like John Hughes bug 10 on http://cvs.haskell.org/Hugs/pages/buglist.html. The variants below all work fine. --Amr --------------------------------------------- runPair :: (?basis_a :: [a], ?basis_b :: [b]) => ((?basis :: [(a,b)]) => t) -> t runPair x = x with ?basis = [(a,b) | a <- ?basis_a, b <- ?basis_b ] runTriple :: (?basis_a :: [a], ?basis_b :: [b], ?basis_c :: [c]) => ((?basis :: [(a,b,c)]) => t) -> t runTriple x = x with ?basis = [(a,b,c) | a <- ?basis_a, b <- ?basis_b, c <- ?basis_c ] runList3 :: (?basis_elem :: [a]) => ((?basis :: [[a]]) => t) -> t runList3 x = x with ?basis = allLists 3 ?basis_elem allLists :: Int -> [a] -> [[a]] allLists 0 _ = [[]] allLists n bs = [ x:xs | x <- bs, xs <- allLists (n-1) bs ] _______________________________________________ Hugs-Bugs mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/hugs-bugs
