H-99: Ninety-Nine Haskell Problems: Difference between revisions

From HaskellWiki
(added Category:Tutorials and used == heading instead of ===)
(added chessguy from #haskell's solution to problem 2)
Line 16: Line 16:
last [x] = x
last [x] = x
last (_:xs) = last xs
last (_:xs) = last xs
</haskell>
== Problem 2 ==
<pre>
(*) Find the last but one box of a list.
Example:
* (my-but-last '(a b c d))
(C D)
</pre>
This can be done by dropping all but the last two elements of a list:
<haskell>
myButLast :: [a] -> [a]
myButLast list = drop ((length list) - 2) list
</haskell>
</haskell>


[[Category:Tutorials]]
[[Category:Tutorials]]

Revision as of 04:22, 12 December 2006

These are Haskell translations of Ninety Nine Lisp Problems.

Problem 1

(*) Find the last box of a list.
Example:
* (my-last '(a b c d))
(D)

This is "last" in Prelude, which is defined as:

last :: [a] -> a
last [x] = x
last (_:xs) = last xs

Problem 2

(*) Find the last but one box of a list.
Example:
* (my-but-last '(a b c d))
(C D)

This can be done by dropping all but the last two elements of a list:

myButLast :: [a] -> [a]
myButLast list = drop ((length list) - 2) list