can't derive Monad

Dean Herington heringto at cs.unc.edu
Mon Jul 28 18:00:31 EDT 2003


The following may not be a bug, but it surprised me.  Why does the
circularity cause GHC fits?


swan(106)% cat NestStateT.hs
{-# OPTIONS -fglasgow-exts #-}

import Control.Monad.State

newtype S1 = S1 [T1 ()]
newtype T1 a = T1 (StateT S1 IO a )
  deriving Monad

main = undefined
swan(105)% ghci NestStateT.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 5.04.3, for Haskell
98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
Loading package haskell98 ... linking ... done.
Compiling Main             ( NestStateT.hs, interpreted )

NestStateT.hs:6:
    Can't make a derived instance of `Monad T1'
    (too hard for cunning newtype deriving)
    When deriving instances for type `T1'
Failed, modules loaded: none.
Prelude>





More information about the Glasgow-haskell-bugs mailing list