Devo scrivere una funzione par :: String -> Bool
per verificare se una determinata stringa con parentesi corrisponde con il modulo stack.Funzione Haskell per verificare le parentesi corrispondenti a
Es:
par "(((()[()])))" = True
par "((]())" = False
Ecco la mia implementazione del modulo di stack:
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
quindi ho bisogno di implementare una funzione par
che testare una serie di parentesi e dire se le parentesi in esso sono bilanciati o no. Come posso farlo usando uno stack?
E la domanda è ...? –
La domanda è come scrivere la funzione par. Qui ho solo un'implementazione dello stack. – Rizo
Rizo, quindi spiegalo nella tua domanda. –