As for something more interactive, this could have some potential, if it can be implemented in Haskell…