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: how can I make this work (Roelof Wobben)
2. Re: how can I make this work (Jonathan Sk?rstedt)
----------------------------------------------------------------------
Message: 1
Date: Tue, 12 May 2015 20:33:05 +0200
From: Roelof Wobben <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] how can I make this work
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20150512/872ae3f5/attachment-0001.html>
------------------------------
Message: 2
Date: Tue, 12 May 2015 20:58:41 +0200
From: Jonathan Sk?rstedt <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] how can I make this work
Message-ID:
<CAD6iYwYKfEKx8nNRwco6KinkOK_3wgG6Qy2i073pLO=_nqm...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Hello!
I will call plusplus' by pp' in the text below
1. Your pp' gives a warning, namely that the patterns
pp' [] xs = xs
pp' [] [] = []
are overlapping. This is because of pattern matching working top-down ie if
I give the input *pp' [] [] *it will match both your function entry points
at *pp' [] xs* and *pp' [] []*. We don't really need *pp' [] []* as *pp' []
ys = ys *will give the correct answer even if ys is an empty list.
2. In your last function body you have this expression
pp' (x:xs) ys = pp' xs (x:ys)
this will not do what you expect, consider the flow below.
I will call pp' on two strings "ABC" and "DEF"
Lets extend this function
pp' (A:BC) DEF = pp' BC (A:DEF)
pp' (B:C) ADEF = pp' C (B:ADEF)
pp' C:[] BADEF = pp' [] (C:BADEF)
pp' [] CBADEF = CBADEF -- <- base case
As you see, it will pick the first of xs to put first on ys but is this
what we want? For one recursion, yes but after that it gets a bit weird.
The second recursion will flip the order of the resulting list by adding
the first object at the start first, instead of last.
We actually don't want our construction (the colon :) to work from inside
the recursive call (pp' xs (x:ys)), we want to move it outside, like this,
and just like we did in init: pp' (x:xs) ys = *x: *pp' xs ys
2015-05-12 20:33 GMT+02:00 Roelof Wobben <[email protected]>:
> pfff, I got grazy here
>
> On this function it works fine :
>
> -- | The main entry point.
> init' :: [a] -> Maybe [a]
> init' [] = Nothing
> init' [x] = Just []
> init' (x:xs) = Just (x:fromMaybe xs (init' xs))
>
> main = print . init' $ [1,3]
>
>
> and on this one it does not work :
>
> plusplus' :: [a] -> [a] -> [a]
> plusplus' [] (xs) = xs
> plusplus' [] [] = []
> plusplus' (xs) [] = xs
> plusplus' (x:xs) yx = plusplus' xs (x:yx)
>
>
> main = print . plusplus' $ [1,2] [3, 4]
>
> Roelof
>
>
>
>
> Alex Hammel schreef op 12-5-2015 om 20:19:
>
> The relevant part of that error message is this:
>
> > The function ?[1, 2]? is applied to one argument, but its type
> > [t0]
> > has none
>
> Which means that you're trying to call a list literal as though it were a
> function (with one argument). Which probably means that you've got a ($)
> out of place.
>
>
> On Tue, 12 May 2015 at 11:16 Roelof Wobben <[email protected]> wrote:
>
>> Thanks,
>>
>> Now I see the last error on the main line :
>>
>> src/Main.hs@7:28-7:39
>> Couldn't match expected type ?[t1] -> [a0]? with actual type
>> [t0]
>> The function ?[1, 2]? is applied to one argument, but its type
>> [t0]
>> has none ? In the second argument of ?($)?, namely ?[1, 2] [3, 4]? In
>> the expression: print . plusplus' $ [1, 2] [3, 4]
>>
>> Roelof
>>
>>
>>
>>
>> Alex Hammel schreef op 12-5-2015 om 20:11:
>>
>> You're missing the parens around (x:yx) in the last clause.
>>
>> On Tue, 12 May 2015 at 11:02 Roelof Wobben <[email protected]> wrote:
>>
>>> Hello,
>>>
>>> I try to re implement ++
>>>
>>> So far I have this ;
>>>
>>> plusplus' :: [a] -> [a] -> [a]
>>> plusplus' [] (xs) = xs
>>> plusplus' [] [] = []
>>> plusplus' (xs) [] = xs
>>> plusplus' (x:xs) yx = plusplus' xs x:yx
>>>
>>> main = print . plusplus' $ [1,2] [3,4]
>>>
>>>
>>> But I still get this error message :
>>>
>>> src/Main.hs@5:23-5:37
>>> Couldn't match expected type
>>> a
>>> with actual type
>>> [a]
>>> a
>>> is a rigid type variable bound by the type signature for plusplus' ::
>>> [a] -> [a] -> [a] at
>>> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:1:14
>>> Relevant bindings include yx :: [a] (bound at
>>> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:5:18)
>>> xs :: [a] (bound at
>>> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:5:14)
>>> x :: a (bound at
>>> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:5:12)
>>> plusplus' :: [a] -> [a] -> [a] (bound at
>>> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:2:1)
>>> ?
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------
>>> [image: Avast logo] <http://www.avast.com/>
>>>
>>> Dit e-mailbericht is gecontroleerd op virussen met Avast
>>> antivirussoftware.
>>> www.avast.com
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> [email protected]
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>
>>
>>
>> _______________________________________________
>> Beginners mailing
>> [email protected]http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>>
>>
>> ------------------------------
>> [image: Avast logo] <http://www.avast.com/>
>>
>> Dit e-mailbericht is gecontroleerd op virussen met Avast
>> antivirussoftware.
>> www.avast.com
>>
>> _______________________________________________
>> Beginners mailing list
>> [email protected]
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>
>
> _______________________________________________
> Beginners mailing
> [email protected]http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
>
>
> ------------------------------
> [image: Avast logo] <http://www.avast.com/>
>
> Dit e-mailbericht is gecontroleerd op virussen met Avast
> antivirussoftware.
> www.avast.com
>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
--
Jonathan Sk?rstedt
Bergsg?rdsg?rdet 39
Lgh 1108
424 32 G?teborg
Mobil: 073 - 76 20 20 7
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20150512/4319fcf2/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 83, Issue 24
*****************************************