| Did you know ... | Search Documentation: |
| pio.pl -- Pure I/O |
This library provides pure list-based I/O processing for Prolog, where the communication to the actual I/O device is performed transparently through coroutining. This module itself is just an interface to the actual implementation modules.
The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
phrase_from_file(:Grammar, +File) is nondet
phrase_from_file(:Grammar, +File, +Options) is nondet
Options are passed to open/4 and phrase_from_stream/3. The latter
notable allows for as(chars) to call a DCG compiled for dealing with
character lists rather than codes.
Below is an example that counts the number of times a string appears in a file. The library dcg/basics provides string//1 matching an arbitrary string and remainder//1 which matches the remainder of the input without parsing.
:- use_module(library(dcg/basics)).
file_contains(File, Pattern) :-
phrase_from_file(match(Pattern), File).
match(Pattern) -->
string(_),
string(Pattern),
remainder(_).
match_count(File, Pattern, Count) :-
aggregate_all(count, file_contains(File, Pattern), Count).
This can be called as (note that the pattern must be a string (code list)):
?- match_count('pure_input.pl', `file`, Count).
phrase_from_file(:Grammar, +File) is nondet
phrase_from_file(:Grammar, +File, +Options) is nondet
Options are passed to open/4 and phrase_from_stream/3. The latter
notable allows for as(chars) to call a DCG compiled for dealing with
character lists rather than codes.
Below is an example that counts the number of times a string appears in a file. The library dcg/basics provides string//1 matching an arbitrary string and remainder//1 which matches the remainder of the input without parsing.
:- use_module(library(dcg/basics)).
file_contains(File, Pattern) :-
phrase_from_file(match(Pattern), File).
match(Pattern) -->
string(_),
string(Pattern),
remainder(_).
match_count(File, Pattern, Count) :-
aggregate_all(count, file_contains(File, Pattern), Count).
This can be called as (note that the pattern must be a string (code list)):
?- match_count('pure_input.pl', `file`, Count).
phrase_from_stream(:Grammar, +Stream)
phrase_from_stream(:Grammar, +Stream, +Options)codes (default) or chars. See also
stream_to_lazy_codes/2 and stream_to_lazy_chars/2.
phrase_from_stream(:Grammar, +Stream)
phrase_from_stream(:Grammar, +Stream, +Options)codes (default) or chars. See also
stream_to_lazy_codes/2 and stream_to_lazy_chars/2.
stream_to_lazy_codes(+Stream, -List) is det
stream_to_lazy_chars(+Stream, -List) is det
stream_to_lazy_list(+Stream, -List) is det
stream_to_lazy_codes(+Stream, -List) is det
stream_to_lazy_chars(+Stream, -List) is det
stream_to_lazy_list(+Stream, -List) is det
stream_to_lazy_codes(+Stream, -List) is det
stream_to_lazy_chars(+Stream, -List) is det
stream_to_lazy_list(+Stream, -List) is detThe following predicates are exported, but not or incorrectly documented.