GHC 7.0.1 (or very strange dimensional-0.8.0.1) bug

in ghci: Prelude> import Numeric.Units.Dimensional.Prelude as D Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s 3.0 m Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) ghci hangs. complied and optimized code detects <<loop>> and let-trick from the above does not help. Here's the complete ghci -v session which contains all package versions ghci -v GHCi, version 7.0.1: http://www.haskell.org/ghc/ :? for help Glasgow Haskell Compiler, Version 7.0.1, for Haskell 98, stage 2 booted by GHC version 6.12.3 Using binary package database: /Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/package.conf.d/package.cache Using binary package database: /Users/pavel/.ghc/i386-darwin-7.0.1/package.conf.d/package.cache hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: -static Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> import Numeric.Units.Dimensional.Prelude as D hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: Loading package old-locale-1.0.0.2 ... linking ... done. Loading package time-1.2.0.3 ... linking ... done. Loading package numtype-1.0 ... linking ... done. Loading package dimensional-0.8.0.1 ... linking ... done. 3.0 m hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: HANG!

Thanks for the report Pavel! Indeed strange. I don't have GHC 7.0.1
installed but definitely don't see this with 6.12.3. Did you put in a
GHC bug report at http://hackage.haskell.org/trac/ghc/wiki/ReportABug?
If not I'll do it tomorrow.
As a work-around you could try providing an explicit type signature (I
suspect the type inferencer is looping), but maybe you've figured out
something workable for you already.
Thanks,
Bjorn
(Sorry for the re-repost, Pavel, my incompetence is matched only by my
perseverance.)
On Tue, Jan 25, 2011 at 22:02, Pavel Perikov
in ghci: Prelude> import Numeric.Units.Dimensional.Prelude as D Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s 3.0 m Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) ghci hangs. complied and optimized code detects <<loop>> and let-trick from the above does not help. Here's the complete ghci -v session which contains all package versions
ghci -v GHCi, version 7.0.1: http://www.haskell.org/ghc/ :? for help Glasgow Haskell Compiler, Version 7.0.1, for Haskell 98, stage 2 booted by GHC version 6.12.3 Using binary package database: /Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/package.conf.d/package.cache Using binary package database: /Users/pavel/.ghc/i386-darwin-7.0.1/package.conf.d/package.cache hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: -static Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> import Numeric.Units.Dimensional.Prelude as D hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: Loading package old-locale-1.0.0.2 ... linking ... done. Loading package time-1.2.0.3 ... linking ... done. Loading package numtype-1.0 ... linking ... done. Loading package dimensional-0.8.0.1 ... linking ... done. 3.0 m hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: HANG!

On 25.01.2011, at 18:37, Bjorn Buckwalter wrote:
(I suspect the type inferencer is looping), but maybe you've figured out something workable for you already.
I told you I'm exhausted right now, didn't I? :) This is definitely not type inferencer. The bug causes compiled program looping. And I have at least one case when let-trick fixes the behavior in compiled program. Pavel.
Thanks, Bjorn
(Sorry for the re-repost, Pavel, my incompetence is matched only by my perseverance.)
On Tue, Jan 25, 2011 at 22:02, Pavel Perikov
wrote: in ghci: Prelude> import Numeric.Units.Dimensional.Prelude as D Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s 3.0 m Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) ghci hangs. complied and optimized code detects <<loop>> and let-trick from the above does not help. Here's the complete ghci -v session which contains all package versions
ghci -v GHCi, version 7.0.1: http://www.haskell.org/ghc/ :? for help Glasgow Haskell Compiler, Version 7.0.1, for Haskell 98, stage 2 booted by GHC version 6.12.3 Using binary package database: /Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/package.conf.d/package.cache Using binary package database: /Users/pavel/.ghc/i386-darwin-7.0.1/package.conf.d/package.cache hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: -static Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> import Numeric.Units.Dimensional.Prelude as D hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: Loading package old-locale-1.0.0.2 ... linking ... done. Loading package time-1.2.0.3 ... linking ... done. Loading package numtype-1.0 ... linking ... done. Loading package dimensional-0.8.0.1 ... linking ... done. 3.0 m hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: HANG!

There is a weird type-checking bug in 7.0.1 that causes loopy behavior: http://hackage.haskell.org/trac/ghc/ticket/4809 Not sure if that is what is happening to you or not. Though in my experience it did not actually print <<loop>>, it just hung. - jeremy On Jan 25, 2011, at 10:48 AM, Pavel Perikov wrote:
On 25.01.2011, at 18:37, Bjorn Buckwalter wrote:
(I suspect the type inferencer is looping), but maybe you've figured out something workable for you already.
I told you I'm exhausted right now, didn't I? :) This is definitely not type inferencer. The bug causes compiled program looping. And I have at least one case when let-trick fixes the behavior in compiled program.
Pavel.
Thanks, Bjorn
(Sorry for the re-repost, Pavel, my incompetence is matched only by my perseverance.)
On Tue, Jan 25, 2011 at 22:02, Pavel Perikov
wrote: in ghci: Prelude> import Numeric.Units.Dimensional.Prelude as D Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s 3.0 m Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) ghci hangs. complied and optimized code detects <<loop>> and let-trick from the above does not help. Here's the complete ghci -v session which contains all package versions
ghci -v GHCi, version 7.0.1: http://www.haskell.org/ghc/ :? for help Glasgow Haskell Compiler, Version 7.0.1, for Haskell 98, stage 2 booted by GHC version 6.12.3 Using binary package database: /Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ ghc-7.0.1/package.conf.d/package.cache Using binary package database: /Users/pavel/.ghc/i386-darwin-7.0.1/package.conf.d/package.cache hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: -static Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> import Numeric.Units.Dimensional.Prelude as D hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: Loading package old-locale-1.0.0.2 ... linking ... done. Loading package time-1.2.0.3 ... linking ... done. Loading package numtype-1.0 ... linking ... done. Loading package dimensional-0.8.0.1 ... linking ... done. 3.0 m hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: HANG!
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

It is NOT type checking bug. It causes Rec {} in core and _|_ in runtime :) On 25.01.2011, at 22:35, Jeremy Shaw wrote:
There is a weird type-checking bug in 7.0.1 that causes loopy behavior:
http://hackage.haskell.org/trac/ghc/ticket/4809
Not sure if that is what is happening to you or not. Though in my experience it did not actually print <<loop>>, it just hung.
- jeremy
On Jan 25, 2011, at 10:48 AM, Pavel Perikov wrote:
On 25.01.2011, at 18:37, Bjorn Buckwalter wrote:
(I suspect the type inferencer is looping), but maybe you've figured out something workable for you already.
I told you I'm exhausted right now, didn't I? :) This is definitely not type inferencer. The bug causes compiled program looping. And I have at least one case when let-trick fixes the behavior in compiled program.
Pavel.
Thanks, Bjorn
(Sorry for the re-repost, Pavel, my incompetence is matched only by my perseverance.)
On Tue, Jan 25, 2011 at 22:02, Pavel Perikov
wrote: in ghci: Prelude> import Numeric.Units.Dimensional.Prelude as D Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s 3.0 m Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) ghci hangs. complied and optimized code detects <<loop>> and let-trick from the above does not help. Here's the complete ghci -v session which contains all package versions
ghci -v GHCi, version 7.0.1: http://www.haskell.org/ghc/ :? for help Glasgow Haskell Compiler, Version 7.0.1, for Haskell 98, stage 2 booted by GHC version 6.12.3 Using binary package database: /Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/package.conf.d/package.cache Using binary package database: /Users/pavel/.ghc/i386-darwin-7.0.1/package.conf.d/package.cache hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: -static Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> import Numeric.Units.Dimensional.Prelude as D hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ let s = 9 *~ (meter D.* meter) in s hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: Loading package old-locale-1.0.0.2 ... linking ... done. Loading package time-1.2.0.3 ... linking ... done. Loading package numtype-1.0 ... linking ... done. Loading package dimensional-0.8.0.1 ... linking ... done. 3.0 m hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. Prelude Numeric.Units.Dimensional.Prelude> D.sqrt $ 9 *~ (meter D.* meter) hiding package containers-0.3.0.0 to avoid conflict with later version containers-0.4.0.0 hiding package QuickCheck-2.3.0.2 to avoid conflict with later version QuickCheck-2.4.0.1 wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054 wired-in package integer-gmp mapped to integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e wired-in package base mapped to base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e wired-in package rts mapped to builtin_rts wired-in package template-haskell mapped to template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f wired-in package dph-seq not found. wired-in package dph-par not found. *** Parser: *** Desugar: *** Simplify: *** CorePrep: *** ByteCodeGen: HANG!
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Right; it's a bug all right. Happily, I committed a major patch two weeks ago, which cures the bug (I checked). The fix will be in 7.0.2. Meanwhile, if you can build the HEAD or get a development snapshot, you should be good to do.
Thanks for reporting this
Simon
From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow-haskell-users-bounces@haskell.org] On Behalf Of Pavel Perikov
Sent: 25 January 2011 19:44
To: Jeremy Shaw
Cc: glasgow-haskell-users@haskell.org
Subject: Re: GHC 7.0.1 (or very strange dimensional-0.8.0.1) bug
It is NOT type checking bug. It causes Rec {} in core and _|_ in runtime :)
On 25.01.2011, at 22:35, Jeremy Shaw wrote:
There is a weird type-checking bug in 7.0.1 that causes loopy behavior:
http://hackage.haskell.org/trac/ghc/ticket/4809
Not sure if that is what is happening to you or not. Though in my experience it did not actually print <<loop>>, it just hung.
- jeremy
On Jan 25, 2011, at 10:48 AM, Pavel Perikov wrote:
On 25.01.2011, at 18:37, Bjorn Buckwalter wrote:
(I
suspect the type inferencer is looping), but maybe you've figured out
something workable for you already.
I told you I'm exhausted right now, didn't I? :) This is definitely not type inferencer. The bug causes compiled program looping. And I have at least one case when let-trick fixes the behavior in compiled program.
Pavel.
Thanks,
Bjorn
(Sorry for the re-repost, Pavel, my incompetence is matched only by my
perseverance.)
On Tue, Jan 25, 2011 at 22:02, Pavel Perikov

7.0.1.20110125 does not have this issue. Thanks for all who replied! On 26.01.2011, at 13:57, Simon Peyton-Jones wrote:
Right; it’s a bug all right. Happily, I committed a major patch two weeks ago, which cures the bug (I checked). The fix will be in 7.0.2. Meanwhile, if you can build the HEAD or get a development snapshot, you should be good to do.
Thanks for reporting this
Simon
participants (4)
-
Bjorn Buckwalter
-
Jeremy Shaw
-
Pavel Perikov
-
Simon Peyton-Jones