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. Re: merge error (trent shipley)
2. Re: merge error (Ut Primum)
----------------------------------------------------------------------
Message: 1
Date: Thu, 17 May 2018 23:04:07 -0700
From: trent shipley <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] merge error
Message-ID:
<caeflybki4zbzupbp+yt7i89kh1orxrcw0fva2mgwj3femaa...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Thanks to all. I used Mukesh's suggestion.
I am still not clear on:
why [x] /= xs
why first == first@(x:xs), especially weather the variable declarations are
considered names for the same thing.
On Thu, May 17, 2018 at 10:39 PM Hemanth Gunda <[email protected]>
wrote:
> Hi Trent,
>
> This works:
>
> merge:: Ord a => [a] -> [a] -> [a]
> merge [] [] = []
> merge x [] = x
> merge [] y = y
> merge first@(x:xs) second@(y:ys)
> | x <= y = x : merge xs second
> | otherwise = y : merge first ys
>
> Difference in the lines
>
> merge x [] = x
> merge [] y = y
>
> As the input is of type [a] where a belongs to typeclass Ord, you must
> pass x instead of [x].
>
> [x] would work if you tried merge [4] []. but will fail if you tried merge
> [4,5] []. because "4,5" isn't of type a.
>
> Regards, Hemanth
>
>
> On Fri, May 18, 2018 at 10:51 AM trent shipley <[email protected]>
> wrote:
>
>> The below produces an error. And I am very proud that I could use the
>> GHCi debugging tools to get this far.
>>
>> merge [] [] works.
>>
>> merge [1] [] works.
>>
>> I don't know why the failing example fails. It should return:
>>
>> [4,5]
>>
>> Help to unstuck is appreciated.
>>
>> :step merge [4,5] []
>>
>> *** Exception: ex6_8.hs:(12,1)-(16,66): Non-exhaustive patterns in
>> function merge
>>
>> Given:
>>
>> merge :: Ord a => [a] -> [a] -> [a]
>>
>> merge [] [] = []
>>
>> merge [x] [] = [x]
>>
>> merge [] [y] = [y]
>>
>> merge first@(x:xs) second@(y:ys) | x <= y = x : merge xs second
>>
>> | otherwise = y : merge first ys
>>
>> _______________________________________________
>> 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/20180517/ad3827ec/attachment-0001.html>
------------------------------
Message: 2
Date: Fri, 18 May 2018 08:39:48 +0200
From: Ut Primum <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] merge error
Message-ID:
<canjdmkk4_odj+3hs7dzxdrtmefo-ce2ofgacznvfopdybbh...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
[x] means a list containing the element x
xs in general is only a variable named xs, and in particular could be a
list; in this case, if you write
first@(x:xs)
you mean that first is a list, its "head" is x and xs is its "tail", i.e.
all the elements of the list first following x.
For example if the arguments of merge are [1,2,4] and [3,6], then
first = [1,2,4]
x=1
xs = [2,4]
second=[3,6]
y=3
ys=[6]
Note that [1,2,4] could not be pattern-matchd with [x]. [6] could (because
contains just one element)
Il ven 18 mag 2018, 08:04 trent shipley <[email protected]> ha
scritto:
> Thanks to all. I used Mukesh's suggestion.
>
> I am still not clear on:
>
> why [x] /= xs
> why first == first@(x:xs), especially weather the variable declarations
> are considered names for the same thing.
>
> On Thu, May 17, 2018 at 10:39 PM Hemanth Gunda <[email protected]>
> wrote:
>
>> Hi Trent,
>>
>> This works:
>>
>> merge:: Ord a => [a] -> [a] -> [a]
>> merge [] [] = []
>> merge x [] = x
>> merge [] y = y
>> merge first@(x:xs) second@(y:ys)
>> | x <= y = x : merge xs second
>> | otherwise = y : merge first ys
>>
>> Difference in the lines
>>
>> merge x [] = x
>> merge [] y = y
>>
>> As the input is of type [a] where a belongs to typeclass Ord, you must
>> pass x instead of [x].
>>
>> [x] would work if you tried merge [4] []. but will fail if you tried
>> merge [4,5] []. because "4,5" isn't of type a.
>>
>> Regards, Hemanth
>>
>>
>> On Fri, May 18, 2018 at 10:51 AM trent shipley <[email protected]>
>> wrote:
>>
>>> The below produces an error. And I am very proud that I could use the
>>> GHCi debugging tools to get this far.
>>>
>>> merge [] [] works.
>>>
>>> merge [1] [] works.
>>>
>>> I don't know why the failing example fails. It should return:
>>>
>>> [4,5]
>>>
>>> Help to unstuck is appreciated.
>>>
>>> :step merge [4,5] []
>>>
>>> *** Exception: ex6_8.hs:(12,1)-(16,66): Non-exhaustive patterns in
>>> function merge
>>>
>>> Given:
>>>
>>> merge :: Ord a => [a] -> [a] -> [a]
>>>
>>> merge [] [] = []
>>>
>>> merge [x] [] = [x]
>>>
>>> merge [] [y] = [y]
>>>
>>> merge first@(x:xs) second@(y:ys) | x <= y = x : merge xs second
>>>
>>> | otherwise = y : merge first ys
>>>
>>> _______________________________________________
>>> 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
>>
> _______________________________________________
> 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/20180518/782fc7c1/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 119, Issue 10
******************************************