El tipo abstracto de datos de las tablas en Haskell

En este artículo continúo la serie dedicada a los tipos de datos abstractos (TAD) en Haskell presentando el TAD de las tablas.

Una tabla (array en inglés y tableau en francés) es una colección de elementos (valores) a los que se accede mediante sus índices.

El contenido del resto del artículo es el siguiente:

  • la signatura del TAD de las tablas;
  • las propiedades del TAD de las tablas;
  • las implementaciones, en Haskell, de las tablas mediante funciones, listas de asociacón y matrices y
  • la comprobación con QuickCheck de sus propiedades.

La signatura del TAD de las tablas

Las signatura de las operaciones del TAD de las tablas son las siguientes:

con el siguiente significado

  • (tabla ivs) es la tabla correspondiente a la lista de asociación ivs (que es una lista de pares formados por los índices y los valores).
  • (valor t i) es el valor del índice i en la tabla t.
  • (modifica (i,v) t) es la tabla obtenida modificando en la tabla t el valor de i por v.

Propiedades del TAD de las tablas

Las propiedades son las siguientes:

  1. modifica (i,v') (modifica (i,v) t) = modifica (i,v') t
  2. Si i /= i', entonces
    modifica (i',v') (modifica (i,v) t) = modifica (i,v) (modifica (i',v') t)

  3. valor (modifica (i,v) t) i = v
  4. Si i /= i', entonces
    valor (modifica (i,v) (modifica (k',v') t)) i' = valor (modifica (k',v') t) i'

Implementación de las tablas mediante funciones

Implementación de las tablas mediante listas de asociación

Implementación de las tablas mediante matrices

Propiedades de las tablas

El objetivo de la serie es la elaboración de los temas de TAD del curso de Informática del Grado en Matemáticas.