[Haskell-beginners] Pound character use in code?
allbery.b at gmail.com
Tue Oct 23 15:09:25 CEST 2012
On Tue, Oct 23, 2012 at 4:31 AM, M.v.Gulik <mvgulik at gmail.com> wrote:
> 1) What is the purpose of the used pound/"#" character here. (Looks
> like some type-casting, but that's just a wild guess from me here.
This is not normal Haskell code you're looking at; it's using internals
which are normally hidden, and # is not special in normal Haskell code. If
you turn on the special meaning (MagicHash) then it usually means that
something is unlifted.
In this case, 1# is an unboxed Int value: a raw machine word.
> 2) kinda the same for the "I#" in the "len  ..." line. As the length
I# is the internal constructor for a normal Int value; the value (1 :: Int)
is internally represented as (I# 1#), or the internal Int constructor
wrapping a raw machine word.
> 3) Why is it giving a compile error on the "where" line. Error:
Because # does not have its special meaning in normal Haskell code.
this special behavior, and what you need to do to get it. But
you should probably not be worrying about it at this point, and almost
certainly not using it.
brandon s allbery kf8nh sine nomine associates
allbery.b at gmail.com ballbery at sinenomine.net
unix/linux, openafs, kerberos, infrastructure http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners