El tipo de las fórmulas proposicionales - Variables de una fórmula
Usando el tipo de las fórmulas proposicionales definido en el ejercicio anterior, definir la función
variables :: FProp -> [Char]
tal que variables p
es la lista de las variables de la fórmula p
. Por ejemplo,
λ> variables (Impl (Var 'A') (Conj (Const False) (Neg (Var 'B')))) "AB" λ> variables (Impl (Var 'A') (Conj (Var 'A') (Neg (Var 'B')))) "AAB"
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
import Tipo_de_formulas (FProp(..)) variables :: FProp -> [Char] variables (Const _) = [] variables (Var x) = [x] variables (Neg p) = variables p variables (Conj p q) = variables p ++ variables q variables (Impl p q) = variables p ++ variables q
Soluciones en Python
from src.tipo_de_formulas import Conj, Const, FProp, Impl, Neg, Var def variables(f: FProp) -> list[str]: match f: case Const(_): return [] case Var(x): return [x] case Neg(p): return variables(p) case Conj(p, q): return variables(p) + variables(q) case Impl(p, q): return variables(p) + variables(q) assert False