Programación Específica > Programación Lógica

 Re: Algunos ejemplos

(1/1)

De Profundiis:
Hola,
un par de ejemplos en Prolog y Haskell, para que se hagan una idea de la potencia de estos lenguajes.

1º CALCULAR LA INVERSA DE UNA CADENA:

Prolog

invertir([ ],[ ]).
invertir([H|T],L) :- invertir(T,Z), append(Z,[H],L).

Haskell

invertir [ ] = [ ]
invertir (x:xs) = (invertir xs)++[x]

sencillo, ¿no? Como véis se emplea mucho la recursión. Diría yo que es algo básico en estos lenguajes y lo más importante, funciona con absoluta lógica, pues es lo que haría cualquiera de nosotros de cabeza para resolverlo de ahí su nombre.

2º BÚSQUEDA SECUENCIAL:

Prolog

buscar(X, [X|_]).
buscar(X,[_|L]) :- buscar(X,L).

Haskell

buscar [ ] n = False
buscar (x:xs) n = if (x==n) then True else (buscar xs n)

3º LONGITUD DE UNA LISTA O ARRAY

Prolog

lon([ ],0).
lon([X|Y],N) :- lon(Y,M), N is M+1.

Haskell

lon [ ] = 0
lon (x:xs) = lon xs + 1

Bueno, probadlo a ver si os funciona ( y a ver si lo entendéis). Prolog funciona con esa técnica que se llama unificación y con backtracking.

SALUDOS.

Iluvatarm:
Aquí hay una pequeña introducción al Prolog para todos aquellos que no hayan tocado nunca ningún lenguaje de este tipo...

Está explicado paso a paso.

http://caminantes.metropoliglobal.com/web/informatica/prolog.htm

Navegación

[0] Índice de Mensajes

Ir a la versión completa