fork download
  1. % $Id: read-integer.pl,v 1.1 2014/09/18 11:21:53 machan Exp $
  2. % 元ネタ:【論理】Prolog【初心者】
  3. % http://p...content-available-to-author-only...h.net/test/read.cgi/tech/1289016056/751-756
  4.  
  5.  
  6. read_integers(Xs) :- read_terms(Ts), select_integer(Ts, Xs).
  7.  
  8.  
  9. read_terms(Xs) :- read(X), read_terms_1(X, Xs).
  10.  
  11. read_terms_1(X, []) :- X = end_of_file.
  12. read_terms_1(X, [X|Xs]) :- X \= end_of_file, read(Y), read_terms_1(Y, Xs).
  13.  
  14.  
  15. select_integer([], []).
  16. select_integer([X|Xs], [X|Ys]) :- integer(X), select_integer(Xs, Ys).
  17. select_integer([X|Xs], Ys) :- \+integer(X), select_integer(Xs, Ys).
  18.  
  19.  
  20.  
  21. %%%%%%%% Example %%%%%%%%
  22. %
  23. % ?- read_integers(L).
  24. % |: 1.
  25. % |: 2.
  26. % |: a.
  27. % |: 3.
  28. % |: (4, 5).
  29. % |: 6.
  30. % |: "7".
  31. % |: 8.
  32. % |: L = [1, 2, 3, 6, 8] ;
  33. % false.
  34. %
  35. % ?-
Success #stdin #stdout #stderr 0.02s 6160KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr