Hallo,
Heute habe ich die neueste SWIPL Version getestet, und bin an
einer Stelle gekommen, die ich mir nicht erklären kann.
Entweder sind meine Programmierkenntnise überaltert, oder da
ist doch der Wurm drinn ...
Folgenden Code zum Testen:
%% --------------------------------------------------------------------
%% Entry Point init.
%% --------------------------------------------------------------------
:- initialization(main, main).
string1("dummy").
string2("dummy").
verb_liste(["ist","auf","laufen"]).
verb(X) :-
verb_liste(MyList),
member(X,MyList).
ist_verb(X) :- verb(X).
eingabe(Prompt, Antwort) :-
prompt1(Prompt),
read_string(current_input, "\n", "\t", _Sep, Eingabe),
bestätigung(Eingabe, Antwort), !.
bestätigung(EingabeText, Antwort) :-
B = ".exit",
string_lower(EingabeText, R),
%% --------------------------
%% compare two string's ...
%% --------------------------
( R == B
-> writeln("vielen Dank für die Benutzung."),halt
; verb_liste(VerbenListe),
( memberchk(R, VerbenListe)
-> ( ist_verb(R)
-> Antwort = "ist ein Verb"
; Antwort = "ist kein Verb"
)
; Antwort = "nicht gefunden."
)
).
%% --------------------------------------------------------------------
%% Entry Point start-up
%% --------------------------------------------------------------------
main :-
write("Bitte Text eingeben: "),
eingabe("", Antwort),
writeln(Antwort),
main.
- übesetzt dieses Script mit:
E:\swipl.exe -o a2.exe -c
scriptname.pl
- startet das Programm, und beobachtet das Verhalten.
nun ändert mal den Funktor main wie folgt:
main :-
eingabe("Bitte Text eingeben: ", Antwort),
writeln(Antwort),
main.
- stellt Ihr was fest ?
Also mir ist aufgefallen, das es den Anschein hat, das da was
gepuffert wird, und zu einen falschen Logik-Fehler kommt.
Auf meinen Windows-Rechner kommt nach dem ersten prompt1/1
kein Eingabe-Text mehr - was mich ein wenig überrascht.
Zumal man davon ausgehen kann, das die Major Version 9 auf ein
solides Fundament hin deutet.
Aber ich kann ja auch falsch liegen.
Was sind Eure Erfahrungen ?
Gruß, Jens
--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com