product = foldl (*) 1 xFields = map .x multiply x y = case y of 0 -> 0 y -> y + multiply x (y-1) type Person = { name : String, age : Int, address : { calle : String, pais : String } } yo : Person yo = { name = "Guillermo", age = 23, address = { calle = "Arroyo Fontarrón", pais = "España" } } tu : Person tu = { name = "Paco", age = 15, address = { calle = "Por allí", pais = "Congo" } } persons = [yo, tu] olderThan16 = filter ((>) 16 . .age) olderThan16_safe = filter (\p -> case p.age of Nothing -> False Just age -> age > 16)