1) En el caso del "Let" supongo que el String se refiere al nombre de la variable y la primera expresión a lo que se va a asignar, pero no entiendo para que es la segunda expresión?
data Expr = Let String Expr Expr
2) En los ejemplos de clase siempre realizan el parseo carácter a carácter y no encuentro ningún ejemplo en el que el parseo se realice con cadenas (strings)?
3) Es adecuado utilizar en este ejercicio la librería Parsec de Haskell?