SoloCodigo

Programación Específica => Otros temas específicos => Programación Lógica => Mensaje iniciado por: De Profundiis en Viernes 13 de Diciembre de 2002, 02:40

Título: Re: Algunos ejemplos
Publicado por: De Profundiis en Viernes 13 de Diciembre de 2002, 02:40
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)++

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.
Título: Algunos ejemplos
Publicado por: Iluvatarm en Viernes 7 de Febrero de 2003, 22:23
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 (http://caminantes.metropoliglobal.com/web/informatica/prolog.htm)