Entrada/Saída
|
|
ISO Standard |
|
Abrir ficheiro/Stream |
open(Stream,
Mode, StreamID) Stream é um átomo representando o pathname do ficheiro ou pipe(Command) Mode pode ser read, write, append ou
update StreamID é o identificador do/a ficheiro/stream aberto/a. Deve usar-se nas instruções de Input/Output |
|
Fechar um ficheiro/stream |
Close(StreamID) |
|
Que
ficheiros/Steams existem e quais as suas
propriedades? |
stream_property(?Stream, ?StreamProperty) |
|
Ler
um termo do teclado ou de um ficheiro/Stream. read
instancia o termo lido com end_of_file quando chega
ao fim do ficheiro. |
read(Term) read(Stream,
Term) |
|
Escrever um termo no ecrã ou num ficheiro/Stream |
write(Term);
writeq(Term) write(Stream,
Term); writeq(Stream, Term) |
|
Mudar de linha |
nl/0, nl(Stream) |
|
|
|
|
Leitura de caracteres |
get_code(Code);
get_code(Stream, Code); get_char(Ch); get_char(Stream, Ch); get_byte(Byte); get_byte(Stream, Byte) Code = -1, Byte = -1 no fim do ficheiro; Ch = end_of_file no fim do ficheiro |
|
Teste de final do ficheiro |
at_end_of_stream ; at_end_of_stream(Stream) |
|
Escrita de caracteres |
put_code(Code);
put_code(Stream, Code); put_char(Ch); put_char(Stream, Char); put_byte(Byte); put_byte(Stream,
Byte) |
Manipulação de estruturas
|
Goal |
|
|
arg(N, Term, Arg) |
N: aridade; Term: estrutura; Arg:
argumento. Obter/fixar o valor do N-ésimo argumento de uma estrutura. |
|
Term=..[ F|Args] |
F é o functor da estrutura Term; Args é a lista dos argumentos de Term |
|
functor(Term, F, N) |
F é o functor de Term; N é a aridade de Term |
Emparelhamento de padrões
|
Goal |
|
|
A = B |
Emparelha A e B, i.e., testa se A e B são iguais, ou efectua o conjunto mínimo de substituições em A e/ou B para que eles fiquem iguais. |
|
A \= B |
Testa se A e B são emparelháveis (o contrário de =). |
Comparação
|
Predicado |
|
|
== |
Testa se dois termos são iguais. Se X for uma
variável não instanciada, X==b falha. Sendo X e Y duas variáveis não
instanciadas, X == Y falha. X==Y tem sucesso. Sendo X e Y duas variáveis
inicialmente não instanciadas, X=Y, X==Y tem sucesso. a+b == b+a falha porque os termos a+b e b+a não são iguais |
|
\== |
A \== B: equivalente a not(A==B) |
|
=:= |
Compara os valores de dois termos
numéricos. a =:= a falha porque a não é nenhum termo
com valor numérico 1=:=1 tem sucesso 1+2 =:= 2+1 tem sucesso |
|
>, >=, <, =< |
Operadores relacionais para expressões numéricas. Avaliam as expressões antes da comparação. |
|
@>, @<, ¼ |
Operadores de comparação para qualquer tipo
de termos. Não avalia expressões numéricas. ?- 5 @> 2 Tem sucesso ?- 5 @> 2+1 Não tem sucesso porque a comparação
faz-se entre o 5 e o functor principal de 2+1, isto é, +. Os termos são comparados por ordem alfabética. Por exemplo, [b] @> [a, b, c] é verdade. |
Conversões
|
Predicate/Arity |
|
|
atom_chars/2 |
converts
between an atom and a list of characters |
|
atom_codes/2 |
converts
between an atom and a list of codes |
|
number_chars/2 |
convert between
a number and a list of characters |
|
number_codes/2 |
convert between
a number and a list of codes |
|
atomic_list_concat/2 |
Converte uma lista de átomos/números num
átomo |
Predicados de teste de tipos de dados
|
Predicate/Arity |
|
|
atom/1 |
Tests if
its argument is an atom |
|
atomic/1 |
Tests if
its argument is an atom or a number |
|
compound/1 |
tests
for a compound term |
|
float/1 |
tests
for a floating point number |
|
ground/1 |
checks
for completely bound terms |
|
integer/1 |
Tests if
its argument is an integer |
|
is_list/1 |
Tests if
its argument is a list |
|
var/1 |
Tests
for a non instantiated variable |
|
nonvar/1 |
Tests if its argument is not a variable. For instance, nonvar(a) succeeds. (X=a, nonvar(X)) also succeeds. |
|
number/1 |
Tests
for a number (either float or integer) |
|
simple/1 |
checks
for an atomic term or a variable |
|
string/1 |
tests for a string |