Asuntos Oficiales > Sobre los Foros de SoloCodigo

 Re: Programación Lógica o Declarativa (PROLOG)

(1/2) > >>

De Profundiis:
Hola a todos,
que digo yo, que no estaría mal un apartado sobre la programación lógica, declarativa y funcional. Para olvidarnos un poco de la programación imperativa (el clásico SI pasa esto HAZ esto, MIENTRAS pase esto HAZ aquello, etc...) y así tratar de aprender un poco de Visual Prolog, de Sicstus Prolog, de Haskell, etc...

Bueno, es una idea. He programado algo con Prolog y Haskell y, al menos, son una alternativa interesante.

Saludos a todos,
soy nuevo y me gusta el foro:P

De Profundiis:
:D:P:P

Eh solocodigo, solo quedan dos más, ¿no? Si lo apoyan dos más lo pones, ¿no?

:P
(qué poco éxito:()
Saludos

iron man:
jejeje buen intento!:)

Venga, aunque debería mantenerme al margen para conservar la imparcialidad que se me presupone como administrador:P apoyo tu propuesta. He oído hablar del prolog en alguna ocasión pero no lo he tocado nunca y por lo que cuentas parece interesante. Vamos a ver, seguro que alguien más se anima.

Un saludo;)

r3dsk1:
Bueno dicen que saber nunca es malo,asi que no seria malo aprender una cosa mas.;)
Lo apoyo.

<<<r3ddsk1>>>

###########                                              
SoloCodigo #                  
The Best   ##                  
###########
 B)

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

Por ejemplo, ¿cómo harían para invertir una cadena en C o Pascal o cualquier otro lenguaje imperativo? Seguro que lo saben.

Bien propondré tres problemas y sus soluciones con programación lógica (PROLOG) y programación funcional (HASKELL), a ver si les parece más interesante.

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, ojalá os haya picado la curiosidad y apoyéis esta iniciativa.

SALUDOS.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa