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: Are these solution the Haskell way ? (Roelof Wobben)
2. Re: Are these solution the Haskell way ? (Daniel P. Wright)
3. Re: Are these solution the Haskell way ? (Roelof Wobben)
----------------------------------------------------------------------
Message: 1
Date: Wed, 13 May 2015 08:39:51 +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] Are these solution the Haskell way ?
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20150513/ca1e33ec/attachment-0001.html>
------------------------------
Message: 2
Date: Wed, 13 May 2015 15:52:14 +0900
From: "Daniel P. Wright" <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Are these solution the Haskell way ?
Message-ID:
<CAP=piqc4v5qa9esxyyfgqiqs9f+b9-2fvrs+e7m3c1ne7b3...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Ah, that's just a small syntactic issue -- in Haskell, operators are infix
(go between the arguments) by default, but named functions are not. So you
would have to write it:
plusplus [] xs = xs
plusplus (x:xs) ys = x : plusplus xs ys
2015-05-13 15:39 GMT+09:00 Roelof Wobben <[email protected]>:
> Thanks,
>
> If I re-implement it like this :
>
> plusplus :: [a] -> [a] -> [a]
> plusplus [] (xs) = xs
> plusplus (x:xs) yx = x : xs plusplus yx
>
> main = print $ ["a","b"] plusplus ["c","d"]
>
>
> I see this error appear :
>
> src/Main.hs@3:26-3:40
> Couldn't match expected type ?([a0] -> [a0] -> [a0]) -> [a] -> [a]? with
> actual type
> [a]
> Relevant bindings include yx :: [a] (bound at
> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:3:17)
> xs :: [a] (bound at
> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:3:13)
> x :: a (bound at
> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:3:11)
> plusplus :: [a] -> [a] -> [a] (bound at
> /home/app/isolation-runner-work/projects/112825/session.207/src/src/Main.hs:2:1)
> The function
> xs
> is applied to two arguments, but its type
> [a]
> has none ?
>
> So for me not a aha moment. I was hoping I would get it
>
> Roelof
>
> Daniel P. Wright schreef op 13-5-2015 om 8:27:
>
> Hi Roelof,
>
> If you don't consider it cheating (and I suggest you shouldn't, having
> had a stab at the answers), you will find great enlightenment looking at
> how these functions are *actually* implemented in the wild. Did you know
> that there is a "source" link for each function on Hackage? By clicking on
> that, for your first example, you can compare the actual implementation of
> (++) with your "plusplus" function:
>
>
> http://hackage.haskell.org/package/base-4.8.0.0/docs/src/GHC-Base.html#%2B%2B
>
> (By the way, it's that function in particular that gave me one of my
> first "Aha!" moments in Haskell... it's quite beautiful in its simplicity).
>
> One thing with viewing the source on Hackage is that sometimes it can be
> a little more confusing than it needs to be for the sake of efficiency. A
> really good source for good, readable examples of Prelude functions in
> Haskell is the Haskell Report:
>
> https://www.haskell.org/onlinereport/standard-prelude.html
>
> (In this case, though, the implementation is the same).
>
> Having a shot at defining these library functions yourself, as you have
> done, and then comparing your version with the "official" version in the
> prelude is a great way to learn good style!
>
> -Dani.
>
> 2015-05-13 15:10 GMT+09:00 Roelof Wobben <[email protected]>:
>
>> Hello,
>>
>> For practising pattern matching and recursion I did recreate some
>> commands of Data,list.
>>
>> My re-implementation of ++ :
>>
>> plusplus :: [a] -> [a] -> [a]
>> plusplus [] [] = [] ;
>> plusplus [] (xs) = xs
>> plusplus (xs) [] = xs
>> plusplus (xs) yx = plusplus' (reverse xs) yx
>>
>> plusplus' :: [a] -> [a] -> [a]
>> plusplus' [] (xs) = xs
>> plusplus' (x:xs) yx = plusplus' xs (x:yx)
>>
>> main = print $ plusplus ["a","b"] ["c","d"]
>>
>> my re-implementation of init :
>>
>> import Data.Maybe
>>
>> -- | 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]
>>
>>
>> my re-implementation of last :
>>
>> -- | The main entry point.
>> last' :: [a] -> Maybe a
>> last' [] = Nothing
>> last' [x] = Just x
>> last' (_:xs) = last' xs
>>
>> main = print . last' $ []
>>
>> Now I wonder if these solutions are the haskell way ? if not so, how can
>> I improve them ,
>>
>> Roelof
>>
>>
>> ---
>> Dit e-mailbericht is gecontroleerd op virussen met Avast
>> antivirussoftware.
>> http://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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20150513/66987e77/attachment-0001.html>
------------------------------
Message: 3
Date: Wed, 13 May 2015 08:55:33 +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] Are these solution the Haskell way ?
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20150513/321a55c8/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 26
*****************************************