[ ghc-Bugs-1205825 ] Incorrect "Defined but not used"

SourceForge.net noreply at sourceforge.net
Tue May 24 05:21:53 EDT 2005


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

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Compiler
Group: 6.4
>Status: Closed
>Resolution: Rejected
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: Incorrect "Defined but not used"

Initial Comment:
This is johndetr at microsoft.com.

When I compile the following function:

150 hexArg :: P Hex
151 hexArg = do MyState i n <- getState
152             let i = i + 1
153             setState (MyState i n)
154             x <- hexNumber
155             if i < n then do { char ','; return () }
156                       else do { char ')'; eof }
157             return x

I get the following messages:

Vesta.hs:151:20: Warning: Defined but not used: `i'

Vesta.hs:152:16:
    Warning: This binding for `i' shadows an existing 
binding
             In the binding group for: i

The second  is correct, if course, but the first is not.

If I change the new binding to i' instead of i (and the 
references below, of course) *both* messages go away!

Please let me know if you'd like more information, a 
shorter error case, etc.

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

>Comment By: Simon Peyton Jones (simonpj)
Date: 2005-05-24 09:21

Message:
Logged In: YES 
user_id=50165

I'm afraid the error message is quite right.  In Haskell, 'let' is 
always recursive, so 
    let i = i+1
means
    letrec i = i+1
which binds i to bottom, of course. Indeed the 'i' bound by the 
previous statement is unused.  Changing the new binding to 
something else is the right thing to do.

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

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



More information about the Glasgow-haskell-bugs mailing list