[caracas-pm] Teoría de Conjuntos

Ernesto Hernandez-Novich emhn at telcel.net.ve
Tue Jan 18 05:15:08 PST 2005


On Mon, 17 Jan 2005, Alexis Arnal wrote:
> Saludos, por casualidad de la vida existe un módulo de perl que me
> permita trabajar con TEORIA DE CONJUNTOS (Unir, intersectar....), la
> otra vez creo que escuche que Ernesto estaba trabajando con teoría de
> Grafos.

Por supuesto. Existen varios módulos para manipular conjuntos. Ahora
mismo tengo mucho tiempo utilizando Set::Scalar [1] que es ideal
cuando los conjuntos tienen símbolos arbitrarios. Típico uso

use Set::Scalar;
my $p = new Set::Scalar;
$p->insert('a','b');
my $q = new Set::Scalar;
$q->insert('b','c');
my $r = Set::Scalar->new(qw/a b c d e/);
print $q,"\n";   # Muestra (b c)
print $p->union($q)->intersect($r),"\n"; # Muestra (a b c)

Se proveen varios predicados sobre conjuntos, además del concepto de
Universo durante la ejecución. Más aún, el módulo aprovecha lasobrecarga
de operadores, de modo que la última línea se podría escribir

print ($p + $q) * $r;

Para los Grafos (dirigidos o no) uso Graph [2]

> Tambien me gustaría saber de que hablaron en la reunión del Sábado ya
> que no pude asistir porq tenía clases de postgrado

Estuvimos viendo algunos aspectos de programación funcional presentes en
Perl. El manejo de listas "como un todo" es básico para la programación
funcional, así que hablamos de usar for/foreach sobre listas, en lugar
de for "a lo C" (iterador versus contador); luego exploramos lo que son
los operadores de iteración implícita (map) y de filtrado (grep),
aplicándolos a algunos problemas simples, pero ilustrativos. Para
terminar, estudiamos la "maniobra Schwartz" y vimos un ejemplo de "map
superfluo" (concretamente, un map cuya lista resultante no se usa, no es
una buena idea).

Quedó pendiente hablar de apuntadores a funciones, evaluación
indirecta y clausuras.

[1] No está debianizado por ahora.
[2] libgraph-perl
-- 
Ernesto Hernández-Novich - On Linux 2.6.9 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't apt-get it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3


More information about the caracas-pm mailing list