[Haskell-cafe] What does "1 = 2" mean in Haskell?
allbery.b at gmail.com
Fri Feb 24 03:00:36 UTC 2017
It is, yes. (Literal numbers in patterns occasionally have unexpected type
ramifications as a result; and occasionally others, since the compiler
rewrites the pattern match into a guard. It's one of those things that Just
Works 99% of the time and then makes you tear your hair out.)
On Thu, Feb 23, 2017 at 9:56 PM, Harendra Kumar <harendra.kumar at gmail.com>
> My first guess was a pattern match, but it sounded a bit odd because there
> is no explicit constructor in case of numbers. If there were an explicit
> constructor it would have been easier to imagine this as a pattern match.
> This seems to be a weird side effect of the special handling of numbers.
> On 24 February 2017 at 07:37, Brandon Allbery <allbery.b at gmail.com> wrote:
>> On Thu, Feb 23, 2017 at 9:05 PM, Harendra Kumar <harendra.kumar at gmail.com
>> > wrote:
>>> Kids have this amazing ability to break any toy in minutes. I gave my
>>> seven year old daughter ghci to play with and in a little while she said it
>>> is broken:
>>> >> let 1 = 2
>>> >> 1
>>> Earlier, I had explained to her about symbols and assigning values to
>>> symbols, and I said numbers are not symbols. But when she came up with this
>>> I could not explain what's going on. How can "1 = 2" be a valid equation?
>>> Am I missing something fundamental here, or it is just broken?
>> It's a pattern match. The match fails, but as it produced no bindings it
>> cannot be observed and its success or failure is irrelevant.
>> brandon s allbery kf8nh sine nomine
>> allbery.b at gmail.com
>> ballbery at sinenomine.net
>> unix, openafs, kerberos, infrastructure, xmonad
brandon s allbery kf8nh sine nomine associates
allbery.b at gmail.com ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe