Asuntos Oficiales > Sobre los Foros de SoloCodigo
Re: Programación Lógica o Declarativa (PROLOG)
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
[#] Página Siguiente
Ir a la versión completa