Haskell — Expressions lògiques

Considereu aquesta definició de tipus per a expressions lògiques amb
variables o valors booleans a les fulles:

        data LogicExpression
            = Or  LogicExpression LogicExpression
            | And LogicExpression LogicExpression
            | Not LogicExpression
            | Var String
            | Val Bool

1.  Feu que LogicExpression sigui instància de Show de forma que les
    expressions compostes apareguin totalment parentitzades en forma
    infixa, tot seguint el format dels exemples.

2.  Feu una funció pushNegations :: LogicExpression -> LogicExpression
    que, donada una expressió lògica, retorni una expressió lògica
    equivalent en la que les negacions només apareguin aplicades a
    variables i que elimini les dobles negacions consecutives.

3.  Escriviu un llista infinita bits :: [[[Int]]] que contingui totes
    les llistes d’n bits per a tota n ≥ 0. No podeu fer servir
    recursivitat ni importar cap llibreria. Penseu en l’operador <*> de
    les llistes considerades com a aplicatius. S’espera una solució
    extremadament concisa. (Aquest apartat és independent dels
    anteriors.)

El Jutge dóna puntacions parcials per cada apartat: un punt per cada joc
de proves públic i un punt per cada joc de proves privat. La puntuació
del problema per part del professor és independent d’aquesta puntuació.

Informació del problema

Autoria: Jordi Petit

Generació: 2026-02-03T17:01:54.028Z

© Jutge.org, 2006–2026.
https://jutge.org
