Programming in logicProlog ist eine, wie ich finde, zu Unrecht vernachlässigte Programmiersprache. "Prolog is even a tool for thinking" meinten Sterling und Shapiro in "The Art of Prolog". Recht so. Für mich ist diese Sprache so eine art Denktraining. Alten Menschen empfiehlt man Kreuzworträtsel gegen das Einrosten des Verstandes. Ich brauche dafür Prolog. Womit nicht gesagt sein soll, daß nicht auch junge Leute fleißig Kreuzworträtsel lösen sollten. Was meiner Meinung nach fehlt, sind einfache Beispielprogramme die zu allem Überfluß auch noch irgendetwas sinnvolles machen und die die Beschäftigung mit dieser Sprache nicht zu einer Strafarbeit werden lassen. Real World Applications. Mit den heutigen erhältlichen freien Prolog Systemen, Compilern wie Interpretern lassen sich durch vorhandene Interfaces zu C, Java und SQL nützliche Anwendungen erstellen. Für welches System man sich entscheidet, SWI Prolog, Ciao, GNU Prolog, Yap ist Wurscht. Ich benutze GNU Prolog, weil ich mich da am besten eingearbeitet habe. Zur Zeit spekuliere ich für ein Projekt wieder mit SWI Prolog, da dort einige Prädikate implementiert sind, die ich sonst per Hand- bzw. Kopfarbeit neu entdecken müßte. So hat jede Implementierung von Prolog seine Stärken. Anbieten kann ich zur Zeit einen kleinen Passwort Generator, der zumindest zeigt wie man die Argumentliste eines GNU Prolog Programmes abfragen, abarbeiten kann, einen simplen Text nach HTML encoder und perirun.
|
Einige Adressen unter: +++ Anzeige +++In eigener Sache.Wenn das mal kein guter Zweck ist! Zugunsten meines ewig notleidenden Bankkontos verkaufe ich derzeit Bücher, DVDs und Hörbücher über booklooker Falls Sie mal ein wenig in meinem persönlichen kompletten Angebot stöbern möchten, hier der link zu meinem Angebot bei booklooker. +++ Anzeige +++ Ende |
% © GPL'ed written by sax
% Errors? Not tested! Drop a mail.
bijektiv(N, M) :- surjektiv(N,M), injektiv(N,M).
surjektiv([], M) :-
list(M),
true,
!.
surjektiv([H|T], M) :-
memberchk(H, M),
surjektiv(T, M).
injektiv([], M) :-
list(M),
true,
!.
injektiv([H|T], M) :-
memberchk(H, M),
select(H, M, Mrest),
!,
injektiv(T, Mrest).
/*
GNU Prolog perdicates:
list(Term) succeeds if Term is currently instantiated to a
list, i.e. the atom [] (empty list) or a term with principal
functor '.'/2 and with second argument (the tail) a list.
member(Element, List) succeeds if Element belongs to the
List.
memberchk/2 is similar to member/2 but only succeeds
once.
select(Element, List1, List2) removes one occurrence of Element
in List1 to provide List2. This predicate is re-executable on
backtracking.
*/
Ich benutze den JED Editor. Es ist ein freier Open Source Editor
und ist erhätlich für viele System wie:
Unix, VMS, MSDOS, OS/2, BeOS, QNX, and win9X/NT.
JED Hompage
Für diesen Editor habe ich ein kleines Modul geschrieben, dass
ein simples Syntax Highlighting bewirkt. prolog.sl. Das heisst viele
Schlüsselwörter werden farblich hervorgehoben.
Download hier.