Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Got "Non type-variable argument in the constraint" error for
a simple function (wizard)
2. Re: Got "Non type-variable argument in the constraint" error
for a simple function (Frerich Raabe)
3. Re: Got "Non type-variable argument in the constraint" error
for a simple function (David McBride)
4. Re: Got "Non type-variable argument in the constraint" error
for a simple function (wizard)
----------------------------------------------------------------------
Message: 1
Date: Tue, 9 Feb 2016 00:24:47 +0800
From: wizard <[email protected]>
To: [email protected]
Subject: [Haskell-beginners] Got "Non type-variable argument in the
constraint" error for a simple function
Message-ID:
<CA+RmsoXdh-cF6SyLQWUqJjB1Dv=jyfp1wn-nayolwfcchsq...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Dear all,
I just started to learn Haskell with learnyouahaskell.com and at the very
beginning, I met a strange issue with following simple function:
-- why does work with "toZero 10" but not for "toZero -10"?toZero ::
(Integral t) => t -> [t]toZero 0 = [0]toZero x = if x > 0 then x :
toZero (x - 1)
else x : toZero (x + 1)
This function works as expected for positive arguments, e.g., "toZero 10"
gives me [10,9,8,7,6,5,4,3,2,1,0]. However, GHCI will raise following error
if I give it a negative argument, e.g., "toZero -10":
*Main> toZero -10
<interactive>:12:1:
Non type-variable argument in the constraint: Num (t -> [t])
(Use FlexibleContexts to permit this)
When checking that ?it? has the inferred type
it :: forall t. (Integral t, Num (t -> [t])) => t -> [t]
This seems strange to me as 10 and -10 has exactly the same type "Num a =>
a". I've done with chapter 1~10 of learnyouahaskell.com but still has no
idea on why this error. Anybody can help to explain this?
Thanks a lot.
Regards
Zhiyi Xie
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20160209/5f6c76d2/attachment-0001.html>
------------------------------
Message: 2
Date: Mon, 08 Feb 2016 17:32:36 +0100
From: Frerich Raabe <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Got "Non type-variable argument in
the constraint" error for a simple function
Message-ID: <[email protected]>
Content-Type: text/plain; charset=US-ASCII; format=flowed
On 2016-02-08 17:24, wizard wrote:
> Dear all,
>
> I just started to learn Haskell with learnyouahaskell.com and at the very
> beginning, I met a strange issue with following simple function:
>
> -- why does work with "toZero 10" but not for "toZero -10"?
> toZero :: (Integral t) => t -> [t]
[..]
> This function works as expected for positive arguments, e.g., "toZero 10"
> gives me [10,9,8,7,6,5,4,3,2,1,0]. However, GHCI will raise following error
> if I give it a negative argument, e.g., "toZero -10":
[..]
The issue is that 'toZero -10' is parsed as 'toZero minus 10', i.e. it's not
a negative value you're passing there. It expects 'toZero' to be a numeric
value.
Try toZero (-10) instead.
--
Frerich Raabe - [email protected]
www.froglogic.com - Multi-Platform GUI Testing
------------------------------
Message: 3
Date: Mon, 8 Feb 2016 11:43:29 -0500
From: David McBride <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Got "Non type-variable argument in
the constraint" error for a simple function
Message-ID:
<can+tr43s3e36w3n-cesqflkckb2r3f4sslwdunat9vxjnwr...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
If you are wondering why you are having this problem it is because - can be
interpretted as either a one argument negation or a two argument
subtraction. If you put parenthesis around (-n) where n is an integer, it
will interpret it as unary, something that will not happen in other
operators.
>:t (-)
(-) :: Num a => a -> a -> a
>:t (+)
(+) :: Num a => a -> a -> a
>:t (-1)
(-1) :: Num a => a
>:t (+1)
(+1) :: Num a => a -> a
>:t (1-1)
(1-1) :: Num a => a
>:t (1+1)
(1+1) :: Num a => a
On Mon, Feb 8, 2016 at 11:24 AM, wizard <[email protected]> wrote:
> Dear all,
>
> I just started to learn Haskell with learnyouahaskell.com and at the very
> beginning, I met a strange issue with following simple function:
>
> -- why does work with "toZero 10" but not for "toZero -10"?toZero ::
> (Integral t) => t -> [t]toZero 0 = [0]toZero x = if x > 0 then x : toZero (x
> - 1)
> else x : toZero (x + 1)
>
>
> This function works as expected for positive arguments, e.g., "toZero 10"
> gives me [10,9,8,7,6,5,4,3,2,1,0]. However, GHCI will raise following error
> if I give it a negative argument, e.g., "toZero -10":
>
> *Main> toZero -10
>
> <interactive>:12:1:
> Non type-variable argument in the constraint: Num (t -> [t])
> (Use FlexibleContexts to permit this)
> When checking that ?it? has the inferred type
> it :: forall t. (Integral t, Num (t -> [t])) => t -> [t]
>
>
> This seems strange to me as 10 and -10 has exactly the same type "Num a =>
> a". I've done with chapter 1~10 of learnyouahaskell.com but still has no
> idea on why this error. Anybody can help to explain this?
> Thanks a lot.
>
> Regards
> Zhiyi Xie
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20160208/fedf46a6/attachment-0001.html>
------------------------------
Message: 4
Date: Tue, 9 Feb 2016 04:20:48 +0800
From: wizard <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Got "Non type-variable argument in
the constraint" error for a simple function
Message-ID:
<ca+rmsoujwmp1qcg7nulcczjd5jjnk9wewlmntcn3s+5jd_a...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Thanks Frerich and David! I got it, :-)
2016-02-09 0:43 GMT+08:00 David McBride <[email protected]>:
> If you are wondering why you are having this problem it is because - can
> be interpretted as either a one argument negation or a two argument
> subtraction. If you put parenthesis around (-n) where n is an integer, it
> will interpret it as unary, something that will not happen in other
> operators.
>
> >:t (-)
> (-) :: Num a => a -> a -> a
> >:t (+)
> (+) :: Num a => a -> a -> a
> >:t (-1)
> (-1) :: Num a => a
> >:t (+1)
> (+1) :: Num a => a -> a
> >:t (1-1)
> (1-1) :: Num a => a
> >:t (1+1)
> (1+1) :: Num a => a
>
>
> On Mon, Feb 8, 2016 at 11:24 AM, wizard <[email protected]> wrote:
>
>> Dear all,
>>
>> I just started to learn Haskell with learnyouahaskell.com and at the
>> very beginning, I met a strange issue with following simple function:
>>
>> -- why does work with "toZero 10" but not for "toZero -10"?toZero ::
>> (Integral t) => t -> [t]toZero 0 = [0]toZero x = if x > 0 then x : toZero (x
>> - 1)
>> else x : toZero (x + 1)
>>
>>
>> This function works as expected for positive arguments, e.g., "toZero 10"
>> gives me [10,9,8,7,6,5,4,3,2,1,0]. However, GHCI will raise following error
>> if I give it a negative argument, e.g., "toZero -10":
>>
>> *Main> toZero -10
>>
>> <interactive>:12:1:
>> Non type-variable argument in the constraint: Num (t -> [t])
>> (Use FlexibleContexts to permit this)
>> When checking that ?it? has the inferred type
>> it :: forall t. (Integral t, Num (t -> [t])) => t -> [t]
>>
>>
>> This seems strange to me as 10 and -10 has exactly the same type "Num a
>> => a". I've done with chapter 1~10 of learnyouahaskell.com but still has
>> no idea on why this error. Anybody can help to explain this?
>> Thanks a lot.
>>
>> Regards
>> Zhiyi Xie
>>
>> _______________________________________________
>> Beginners mailing list
>> [email protected]
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20160209/800d6646/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 92, Issue 11
*****************************************