convert to using the state monad, because next we're going to track
completed phrases so we can recover the full parse
Merge branch 'master' of github.com:ludflu/mini-cyk-parser