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
1 |
variables :: FProp -> [Char] |
tal que variables p
es la lista de las variables de la fórmula p
. Por ejemplo,
1 2 3 4 |
λ> 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.
1 2 3 4 5 6 7 8 |
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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 |