Bueno, aca va lo q escribi, si alguien tiene mejores ideas, comentenlas =)
(se q pude haber hecho todosDistintos de otra forma, pero el pertenece probablemente lo use en todos lados mas adelante)
ultimo::[Integer]->Integer
ultimo (x:xs)|not(xs == []) = ultimo xs
|otherwise = x
principio::[Integer]->[Integer]
principio (x:xs)| xs == [] = []
|otherwise = [x]++(principio xs)
todosIguales::[Integer]->Bool
todosIguales (x:xs)|xs == [] = True
|x == head xs = todosIguales xs --vale head???
|otherwise = False
todosDistintos::[Integer]->Bool
todosDistintos [] = True
todosDistintos (x:xs)|pertenece x xs = False
|otherwise = todosDistintos xs
pertenece::Integer->[Integer]->Bool --vale elem???
pertenece a [] = False
pertenece a (x:xs)|a==x = True
|otherwise = pertenece a xs
mismosElems::[Integer]->[Integer]->Bool
mismosElems [] y = True
mismosElems (x:xs) y |pertenece x y = mismosElems xs y
|otherwise = False