# LGA-04: Haskell Lists (Part I)¶

Implement the following functions in Haskell. You don’t need to get every
single one of them working, you need only show **reasonable effort**.
Reasonable effort might be trying them all, but not being able to get 2 of them
working. I would not consider only getting half of them working a reasonable
effort, for example.

`prodOfHeads`

takes two lists and returns the product of the heads:GHCi> prodOfHeads [2,3] [4,6] 8

`longerList`

takes two lists and returns the longer one:GHCi> longerList [1,2] [4,5,6] [4,5,6]

(your choice which to return if same length)

`evenOdd`

takes a number \(n\) and returns a list containing the first \(n\) even numbers followed by the first \(n\) odd numbers:GHCi> evenOdd 4 [2,4,6,8,1,3,5,7]

You may assume \(0 \leqslant n < 1000\).

`addToTail`

takes two lists and returns a list with the head of the first list at the end of the second:GHCi> addToTail [1,2,3] [4,5,6] [4,5,6,1]

`replaceLast`

takes two lists and returns a list with the last element of the second list replaced by the last element of the first list:GHCi> replaceLast [1,2,3] [4,5,6] [4,5,3]

`removeHeads`

takes two lists and concatenates them, minus the first elements:GHCi> removeHeads [1,2,3] [4,5,6] [2,3,5,6]

`replaceList`

takes two lists and replaces the first \(n\) elements (where \(n\) is the length of the first list) with the elements of the first list:GHCi> replaceList [1,2] [4,5,6,7] [1,2,6,7] GHCi> replaceList [1,2,3,4] [7,8] [1,2,3,4]