<div dir="ltr">Init returns all but the last element of a list. The idea behind the recursive solution is to keep accepting elements till there is only one left, and replace it with the empty list.<div>For example,<br><div><br></div><div><font face="monospace, monospace"> init [1, 2, 3]</font></div><div><font face="monospace, monospace">== init (1 : 2 : 3 : []) { desugar list syntax }</font></div><div><font face="monospace, monospace">== 1 : init (2 : 3 : []) { apply init }</font></div><div><font face="monospace, monospace">== 1 : 2 : init (3 : []) { apply init }</font></div><div><font face="monospace, monospace">== 1 : 2 : [] { init [x] = [] }</font></div><div><font face="monospace, monospace"><br></font></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 13 May 2015 at 15:32, akash g <span dir="ltr"><<a href="mailto:akaberto@gmail.com" target="_blank">akaberto@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Perhaps a good place to start with functional programming is SICP : <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start" target="_blank">http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start</a><br><br></div>While it doesn't teach you via the Haskell language, it teaches you how to construct functional programs and how the compiler/interpreter views it. Also, it teaches higher order programming quite well, At least, it is much better than every intro haskell book I've read.<br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 13, 2015 at 3:23 PM, akash g <span dir="ltr"><<a href="mailto:akaberto@gmail.com" target="_blank">akaberto@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>*wrap, not rap. In my previous mail.<br><br></div>Also, there is already a library that does list operations in a safe way, though they have used monads. Give a look at the source code and see if it helps.<br><br><a href="https://hackage.haskell.org/package/listsafe-0.1.0.0/docs/Data-List-Safe.html" target="_blank">https://hackage.haskell.org/package/listsafe-0.1.0.0/docs/Data-List-Safe.html</a><br></div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 13, 2015 at 3:19 PM, akash g <span dir="ltr"><<a href="mailto:akaberto@gmail.com" target="_blank">akaberto@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Ah, but it doesn't. Since this is a functional language, we have a pointer to it. In fact, all it does is rap it around in the Maybe type.<br><br></div>Also, my version doesn't do what you want. One way to do that would be what you have. Or something like this.<br><br></div>The following turns the partial function in the Prelude to one that is safe<br><br>==========<br>import Data.List<span><br><br>init' :: [a] -> Maybe [a]<br></span>init' [] = Nothing -- Base case<br>init' xs = Just $ tail xs -- Inductive case <br>==========<br><br><br><div><div><div><br><br><br><br></div></div></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 13, 2015 at 2:47 PM, Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hello, <br>
<br>
What my intention was to make a safe version of the init function
found in Data.list so it procudes a list without the last item. <br>
At first look your function procudes the whole list again.<br>
<br>
Roelof<br>
<br>
<br>
<br>
akash g schreef op 13-5-2015 om 10:57:<br>
</div><div><div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>Why not just?<br>
<br>
==================<br>
</div>
init' [] = Nothing<br>
</div>
init' xs = Just xs<br>
==================<br>
<br>
</div>
<div>Meets your type sig and is also has a time complexity of
O(1) instead of O(n) which will be the time complexity in
the solution involving fromMaybe. Maybe I'm missing
something.<br>
</div>
<div><br>
</div>
Perhaps it'd help us help you if you'd be a bit more clear on
what you want to achieve. </div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, May 12, 2015 at 9:01 PM, Sumit
Sahrawat, Maths & Computing, IIT (BHU) <span dir="ltr"><<a href="mailto:sumit.sahrawat.apm13@iitbhu.ac.in" target="_blank">sumit.sahrawat.apm13@iitbhu.ac.in</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span>On 12 May 2015
at 20:14, Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Thanks, <br>
<br>
The right solution was this : <br>
<br>
init' (x:xs) = Just (x:fromMaybe xs (init'
xs))<br>
<br>
if I understand it right x:fromMaybe xs takes
care that from xs the just or Nothing is
removed ?<br>
<br>
</div>
</div>
</blockquote>
<div><br>
</div>
</span>Trying it out in ghci,
<div><br>
</div>
<div>fromMaybe [1,2] Nothing == [1,2]</div>
<div>fromMaybe [1,2] Just [3] == [3]</div>
<div><br>
</div>
<div>It seems like that should indeed work.</div>
<div>
<div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> Roelof<br>
<br>
<br>
<br>
Alexey Shmalko schreef op 12-5-2015 om
16:33:<br>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">Try fromMaybe [1].
Examples<br>
<br>
<div>Prelude Data.Maybe> fromMaybe
[] (Just [1,2,3])</div>
<div>[1,2,3]</div>
<div>Prelude Data.Maybe> fromMaybe
[1,2,3] Nothing</div>
<div>[1,2,3]</div>
<div><br>
</div>
<div>[1]: <a href="https://hackage.haskell.org/package/base-4.8.0.0/docs/Data-Maybe.html#v:fromMaybe" target="_blank">https://hackage.haskell.org/package/base-4.8.0.0/docs/Data-Maybe.html#v:fromMaybe</a><br>
</div>
</div>
<br>
<div class="gmail_quote">On Tue, May 12,
2015 at 5:28 PM Roelof Wobben <<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Oke, <br>
<br>
And how do I do this. Haskell
is a difficult one to learn,<br>
<br>
Roelof<br>
<br>
<br>
<br>
Alexey Shmalko schreef op
12-5-2015 om 16:24:<br>
</div>
</div>
<div bgcolor="#FFFFFF" text="#000000">
<blockquote type="cite">
<div dir="ltr">Before cons'ing
the result of init', you
should check whether it's Just
or Nothing. What you're doing
now is something along the
line with 5 : Just 3 -- this
won't typecheck.<br>
</div>
<br>
<div class="gmail_quote">On Tue,
May 12, 2015 at 5:22 PM Roelof
Wobben <<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Brandon Allbery
schreef op 12-5-2015 om
16:16:<br>
</div>
</div>
<div bgcolor="#FFFFFF" text="#000000">
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On
Tue, May 12, 2015
at 10:11 AM,
Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>I do not
understand
what you are
saying to me.<br>
<br>
I know that
init produces
a Maybe [a] .
That is why I
did put a Just
before it.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>You are
invoking it
again though,
and using its
result as if it
produces [a]
instead of Maybe
[a].</div>
</div>
<div><br>
</div>
-- <br>
<div>
<div dir="ltr">
<div>brandon s
allbery kf8nh
sine nomine
associates</div>
<div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>
<a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div>
<div>unix,
openafs,
kerberos,
infrastructure,
xmonad <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Beginners mailing list
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
</blockquote>
<br>
</div>
<div bgcolor="#FFFFFF" text="#000000"> What is
then the right way to do.
I still do not understand
what you are trying to
make clear to me.</div>
<div bgcolor="#FFFFFF" text="#000000"><br>
<br>
Roelof</div>
<div bgcolor="#FFFFFF" text="#000000"><br>
<br>
<br>
<br>
<hr style="border:none;color:rgb(144,144,144);min-height:1px;width:99%;background-color:rgb(176,176,176)">
<table style="border-collapse:collapse;border:none">
<tbody>
<tr>
<td style="border:none;padding:0px 15px 0px 8px"> <a href="http://www.avast.com/" target="_blank"> <img src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast
logo" border="0"> </a>
</td>
<td>
<p style="color:rgb(61,77,90);font-family:Calibri,Verdana,Arial,Helvetica;font-size:12pt">
Dit
e-mailbericht is
gecontroleerd op
virussen met
Avast
antivirussoftware.
<br>
<a href="http://www.avast.com/" target="_blank">www.avast.com</a> </p>
</td>
</tr>
</tbody>
</table>
<br>
</div>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Beginners mailing list
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
</blockquote>
<br>
<br>
<br>
<hr style="border:none;color:rgb(144,144,144);min-height:1px;width:99%;background-color:rgb(176,176,176)">
<table style="border-collapse:collapse;border:none">
<tbody>
<tr>
<td style="border:none;padding:0px 15px 0px 8px"> <a href="http://www.avast.com/" target="_blank"> <img src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast
logo" border="0"> </a>
</td>
<td>
<p style="color:rgb(61,77,90);font-family:Calibri,Verdana,Arial,Helvetica;font-size:12pt">
Dit e-mailbericht is
gecontroleerd op
virussen met Avast
antivirussoftware. <br>
<a href="http://www.avast.com/" target="_blank">www.avast.com</a> </p>
</td>
</tr>
</tbody>
</table>
<br>
</div>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Beginners mailing list
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
</blockquote>
<br>
<br>
<br>
<hr style="border:none;color:rgb(144,144,144);min-height:1px;width:99%;background-color:rgb(176,176,176)">
<table style="border-collapse:collapse;border:none">
<tbody>
<tr>
<td style="border:none;padding:0px 15px 0px 8px"> <a href="http://www.avast.com/" target="_blank"> <img src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast logo" border="0"> </a>
</td>
<td>
<p style="color:rgb(61,77,90);font-family:Calibri,Verdana,Arial,Helvetica;font-size:12pt">
Dit e-mailbericht is
gecontroleerd op virussen met
Avast antivirussoftware. <br>
<a href="http://www.avast.com/" target="_blank">www.avast.com</a>
</p>
</td>
</tr>
</tbody>
</table>
<br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br>
</blockquote>
</div>
</div>
</div>
<span><font color="#888888"><br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div>Regards</div>
<div dir="ltr">
<div><br>
</div>
<div>Sumit Sahrawat</div>
</div>
</div>
</div>
</div>
</div>
</div>
</font></span></div>
</div>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Beginners mailing list
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
</blockquote>
<br>
<br><br>
<hr style="border:none;color:#909090;background-color:#b0b0b0;min-height:1px;width:99%">
<table style="border-collapse:collapse;border:none">
<tbody><tr>
<td style="border:none;padding:0px 15px 0px 8px">
<a href="http://www.avast.com/" target="_blank">
<img src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast logo" border="0">
</a>
</td>
<td>
<p style="color:#3d4d5a;font-family:"Calibri","Verdana","Arial","Helvetica";font-size:12pt">
Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
<br><a href="http://www.avast.com/" target="_blank">www.avast.com</a>
</p>
</td>
</tr>
</tbody></table>
<br>
</div></div></div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div>Regards</div><div dir="ltr"><div><br></div><div>Sumit Sahrawat</div></div></div></div></div></div></div>
</div>