Conway's game of life in 100 lines or less!
Haskell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
src
.gitignore
LICENSE
README.md
Setup.hs
conway.cabal
stack.yaml

README.md

Conway

A quick cli conway's game of life implementation in Haskell using Representable and Comonad.

The board 'wraps around' Pac-man style.

asciicast

Running

  • Clone the repo: git clone https://github.com/ChrisPenner/conway.git
  • stack build && stack exec conway-exe
  • ???
  • Profit!

Customization

  • Clone the repo: git clone https://github.com/ChrisPenner/conway.git
  • Define your own shapes as a list of Coordinates; e.g.
glider, blinker, beacon :: [Coord]
glider = [(1, 0), (2, 1), (0, 2), (1, 2), (2, 2)]
blinker = [(0, 0), (1, 0), (2, 0)]
beacon = [(0, 0), (1, 0), (0, 1), (3, 2), (2, 3), (3, 3)]
  • Define your own 'life' rules as a function from Grid -> Bool; the grid passed to the function is focused on the cell you should compute 'life' for.
  • Customize your tick time in Main.hs
  • Build a starting grid using provided combinators, e.g.
grid :: Grid
grid = mkGrid $
     glider `at` (0, 0)
  ++ blinker `at` (5, 10)
  ++ beacon `at` (15, 5)