Old bug hanging around?
I got an error on the following short program (which ghc compiles and runs). =========== -- Some unix-like tools written in simple, clean Haskell import Data.List import Data.Char import System.IO import Text.Printf -- First, two helpers io f = interact (unlines . f . lines) showln = (++ "\n") . show -- Compute a simple cksum of a file main = interact $ showln . foldl' k 5381 where k h c = h * 33 + ord c ======== Hugs> :load chksum.hs ERROR "chksum.hs":15 - Unresolved top-level overloading *** Binding : showln *** Outstanding context : Show b Text.Printf> This error has been around for a while. See http://www.arcknowledge.com/gmane.comp.lang.haskell.hugs.bugs/2006-11/msg000... Is there a fix for this problem? Thanks, Dave Feustel
On Wed, Mar 07, 2007 at 10:54:55PM +0000, Dave@haskell.org wrote:
io f = interact (unlines . f . lines) showln = (++ "\n") . show
-- Compute a simple cksum of a file
main = interact $ showln . foldl' k 5381 where k h c = h * 33 + ord c
========
Hugs> :load chksum.hs ERROR "chksum.hs":15 - Unresolved top-level overloading *** Binding : showln *** Outstanding context : Show b
Text.Printf>
This error has been around for a while.
Yes, it's a documented divergence from Haskell 98 in the handling of the Monomorphism Restriction. Workarounds are to give an explicit signature for showln, or to tweak the definition so it's a function: showln x = show x ++ "\n" (or, better) showln x = shows x "\n"
participants (2)
-
unknown@example.com -
Ross Paterson