functional programming implementation of Conway's game of life