lib/markov/demo.ex

defmodule Markov.Demo do
  def generate_shakespeare do
    data = File.read!("the_comedy_of_errors.txt")
    lines = String.split(data, "\n")
    chain = Enum.reduce(lines, %Markov{}, fn line, chain ->
      if String.trim(line) == "" do
        chain
      else
        Markov.train(chain, line)
      end
    end)

    for _ <- 1..100 do
      chain |> Markov.generate_text |> IO.puts
    end

    :ok
  end
end