|
| <prev next> |
[ ghc-Bugs-820778 ] Malformed Predicate w/ Template Haskell: msg#00053lang.haskell.glasgow.bugs
Bugs item #820778, was opened at 2003-10-09 17:51 Message generated for change (Comment added) made by simonpj You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=820778&group_id=8032 Category: Compiler (Type checker) Group: 6.0.1 >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Jon Cast (jcast) Assigned to: Nobody/Anonymous (nobody) Summary: Malformed Predicate w/ Template Haskell Initial Comment: The following two modules: --- Cut --- module ScratchTemplates where import Language.Haskell.THSyntax newtype Interaction a = Interaction a deriving Show ret = Interaction instance Monad Interaction where return = Interaction Interaction x >>= f = f x instance Functor Interaction where fmap f x = x >>= return . f interactionT t = tcon (TconName "Interaction") `tapp` t class Flatten a b | a -> b where flatten :: a -> b flattenT :: TypQ -> TypQ -> TypQ flattenT t t' = tvar "Flatten" `tapp` t `tapp` t baseType t = sequence [ inst (return []) (flattenT t t) [val (pvar "flatten") (normal (var "id")) []], inst (return []) (flattenT (interactionT t) (interactionT t)) [val (pvar "flatten") (normal (var "id")) []]] instance Flatten a b => Flatten (Interaction (Interaction a)) (Interaction b) where flatten a = a >>= id >>= return . flatten module Main where import Monad import ScratchTemplates import Language.Haskell.THSyntax $(baseType (tcon (Tuple 0))) instance Flatten String String where flatten a = a instance Flatten (Interaction String) (Interaction String) where flatten a = a instance Flatten b c => Combine String b (String, c) where combine a b = liftM2 (,) a (fmap flatten b) instance Flatten Int Int where flatten a = a class Combine a b c | a b -> c where combine :: Interaction a -> Interaction b -> Interaction c instance Combine () b b where combine a b = b instance Flatten b c => Combine Int b (Int, c) where combine a b = do x <- a y <- fmap flatten b return (x, y) instance (Flatten b c, Combine a c d) => Flatten (Interaction a, Interaction b) (Interaction d) where flatten (a, b) = combine a (fmap flatten b) main = main --- Cut here --- loaded into ghci -fglasgow-exts produce the following error message: Compiling ScratchTemplates ( ScratchTemplates.hs, interpreted ) Compiling Main ( scratch.hs, interpreted ) ghc-6.0.1: panic! (the `impossible' happened, GHC version 6.0.1): Malformed predicate Please report it as a compiler bug to glasgow-haskell-bugs@xxxxxxxxxxx, or http://sourceforge.net/projects/ghc/. ---------------------------------------------------------------------- >Comment By: Simon Peyton Jones (simonpj) Date: 2003-12-31 17:07 Message: Logged In: YES user_id=50165 Fixed in the HEAD ---------------------------------------------------------------------- Comment By: Simon Peyton Jones (simonpj) Date: 2003-10-30 10:37 Message: Logged In: YES user_id=50165 This bug turns out to be simply that Template Haskell is only set up for Haskell 98, whereas Jon Cast wants to manipulate multi-parameter type clases. Should we add multi-param type classes to THSyntax? Does anyone feel like doing it? It's a fairly routine matter, but it does mean changing the data type. (Another reason to use bracket syntax!) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=820778&group_id=8032
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ ghc-Bugs-865518 ] The Impossible Happened, SourceForge.net |
|---|---|
| Next by Date: | Re: Hello world fails on Win32, Gour |
| Previous by Thread: | [ ghc-Bugs-753780 ] (->) used prefix doesn't work with unboxed kinds, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |