Haskell Alex - error en la plantilla de envoltura

Estoy tratando de entender a Alex y a los lexers en general, pero tengo problemas para ejecutar mi lexer.

Escribí lexers en envoltorios "básicos" y "posn", pero no pude en el envoltorio "mónada". Creo que tengo que usarmonad envoltorio porque necesito recopilar cadenas y posiciones de token en la entrada. También necesito múltiples estados. Por ahora estoy tratando de ejecutar este ejemplo simple:

<code>{
module Main (main) where
}

%wrapper "monad"

$whitespace = [\ \b\t\n\f\v\r]
$digit      = 0-9
$alpha      = [a-zA-Z_]
$upper      = [A-Z]
$lower      = [a-z]

@tidentifier = $upper($alpha|_|$digit)*
@identifier  = $lower($alpha|_|$digit)*


tokens :-

$whitespace+ ;
$upper $alpha+ { typeId }
$lower $alpha+ { id_ }
$digit+ { int }

{

data Lexeme = L AlexPosn LexemeClass String

data LexemeClass
        = TypeId String
        | Id String
        | Int Int
        | EOF
    deriving (Show, Eq)

typeId :: AlexInput -> Int -> Alex Lexeme
typeId = undefined

id_ :: AlexInput -> Int -> Alex Lexeme
id_ = undefined

int :: AlexInput -> Int -> Alex Lexeme
int = undefined

alexEOF = return (L undefined EOF "")

main :: IO ()
main = do
    s <- getContents
    let r = runAlex s $ do
                return alexMonadScan
    print r
}
</code>

Mis acciones sonundefined por ahora. Cuando intento compilarlo, aparece este error:

<code>➜  haskell  ghc --make Tokens.hs
[1 of 1] Compiling Main             ( Tokens.hs, Tokens.o )

templates/wrappers.hs:208:17:
    Couldn't match expected type `(AlexPosn, Char, [Byte], String)'
                with actual type `(t0, t1, t2)'
    Expected type: AlexInput
      Actual type: (t0, t1, t2)
    In the return type of a call of `ignorePendingBytes'
    In the first argument of `action', namely
      `(ignorePendingBytes inp)'
</code>

También estoy recibiendo varios errores cuando intento compilar ejemplos en el repositorio de github de Alex, ¿podría estar relacionado con una falta de coincidencia de versiones? He instalado alex de cabal con ghc 7.0.4. ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta