Problem 02

99 Haskell Problems

Problem 2

(*) Find the last but one element of a list.

(Note that the Lisp transcription of this problem is incorrect.)

Example in Haskell:

Prelude> myButLast [1,2,3,4]
3
Prelude> myButLast ['a'..'z']
'y'

Solution:

myButLast x = last (init x)

or

myButLast [] = error "empty list"
myButLast (_:[]) = error "list must have at least 2 elements"
myButLast [x, _] = x
myButLast (_:xs) = myButLast x
Advertisements