logo       

[ ghc-Bugs-1200592 ] GHC fails to pass dictionary in a rank-2 situation.: msg#00056

lang.haskell.glasgow.bugs

Subject: [ ghc-Bugs-1200592 ] GHC fails to pass dictionary in a rank-2 situation.

Bugs item #1200592, was opened at 2005-05-12 12:34
Message generated for change (Comment added) made by simonpj
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1200592&group_id=8032

Category: Compiler
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: GHC fails to pass dictionary in a rank-2 situation.

Initial Comment:
Hello,

The following code leads to a run- or compile-time error.
\begin{code}
{-# OPTIONS -fglasgow-exts #-}
module Main () where

foo :: (forall m. Monad m => m a) -> IO a
foo = id . id

main :: IO ()
main = foo (return ())
\end{code}

GHC translates `foo' effectively to an identity
function, failing to pass a dictionary to the argument.
foo :: %forall a . (%forall (m::(*->*)) . ZCTMonad m ->
m a)
-> IO a =
\ @ a ->
zi @ (IO a) @ (IO a)
@ (IO a) (id @ (IO a))
(id @ (IO a));

This doesn't typecheck, therefore

$ ./ghc-6.5.20050510 -O IsolateBug.hs
ghc-6.5.20050510: panic! (the `impossible' happened,
GHC version 6.5.20050510):
No match in record selector Var.idInfo

Please report it as a compiler bug to
glasgow-haskell-bugs@xxxxxxxxxxx,
or http://sourceforge.net/projects/ghc/.

$ ghc-6.5.20050510 IsolateBug.hs
$ ./a.out
zsh: segmentation fault ./a.out


The bug still occurs when we give the compiler a little
bit more type information
> foo = (id :: IO a -> IO a) . (id :: IO a -> IO a)
, however
> foo = id . id :: IO a -> IO a
and
> foo = id
behave correctly.

Tested with ghc-6.2.2, ghc-6.4 and the latest ghc-6.5
snapshot.

-- Thomas Jäger <ThJaeger@xxxxxxxxx>

----------------------------------------------------------------------

>Comment By: Simon Peyton Jones (simonpj)
Date: 2005-05-12 16:52

Message:
Logged In: YES
user_id=50165

Oh crumbs! This turns out to be an omission for ages.
Easily fixed, just an omitted call.

Thanks for the report. It's fixed in the HEAD, and we'll merge
into 6.4.1

Simon

----------------------------------------------------------------------

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1200592&group_id=8032


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise