Necesito escribir una función par :: String -> Bool
para verificar si una cadena dada con paréntesis se corresponde usando el módulo de pila.Función Haskell para verificar paréntesis que coincidan con
Ex:
par "(((()[()])))" = True
par "((]())" = False
Aquí está mi implementación del módulo de pila:
module Stack (Stack,
push, pop, top,
empty, isEmpty)
where
data Stack a = Stk [a]
deriving (Show)
push :: a -> Stack a -> Stack a
push x (Stk xs) = Stk (x:xs)
pop :: Stack a -> Stack a
pop (Stk (_:xs)) = Stk xs
pop _ = error "Stack.pop: empty stack"
top :: Stack a -> a
top (Stk (x:_)) = x
top _ = error "Stack.top: empty stack"
empty :: Stack a
empty = Stk []
isEmpty :: Stack a -> Bool
isEmpty (Stk [])= True
isEmpty (Stk _) = False
por eso es necesario para implementar una función par
que pondría a prueba una serie de paréntesis y decir si los paréntesis en que se equilibran o no. ¿Cómo puedo hacer eso usando una pila?
Y la pregunta es ...? –
La pregunta es cómo escribir la función par. Solo tengo una implementación de pila aquí. – Rizo
Rizo, luego explícalo en tu pregunta. –