Introducedilhaão a numericalio
==============================

numericalio é uma colecção de funcedilhaões para ler e escrever ficheiros de dados. O ficheiro é lido completamente para construir um objecto; leituras parciais não são suportadas.

É assumido que cada item a ler ou escrever é atômico: um número inteiro, número em ponto flutuante, grande número em ponto flutuante, sequência de caracteres, ou símbolo, e não um número racional ou um número complexo ou qualquer outro tipo de expressão não atômica. Essas funcedilhaões podem tentar fazer alguma coisa levemente parecida com expressões não atômicas, mas os resultados não são especificados aqui e são sujeitos a mudancedilhaas.

Átomos em ambos os ficheiros de entrada e saída possuem o mesmo formato que em ficheiros de lote do Maxima ou no console interativo. Em particular, sequência de caracteres são contidas dentro de aspas duplas, contrabarra \ evita qualquer interpretacedilhaão especial do caractere seguinte, e o ponto de interrogacedilhaão ? é reconhecido no início de um símbolo para significar um símbolo do Lisp (em oposicedilhaão a um símbolo do Maxima). Nenhum caractere de continuacedilhaão (para continuar linhas quebradas) é reconhecido.

SEPARATOR_FLAG diz que caracteres separa elementos. SEPARATOR_FLAG é um argumento opcional para todas as funcedilhaões de leitura e escrita.

Para entrada, os valores de SEPARATOR_FLAG reconhecidos são: comma para valores separados por vírgula, pipe para valores separados pelo caractere barra vertical |, semicolon para valores separados por ponto e vírgula ;, e space para valores separados pelos caracteres de espacedilhao e de tabulacedilhaão. Se o nome do ficheiro a ser lido/escrito termina em .csv e SEPARATOR_FLAG não for especificado, comma é assumido. Se o nome do ficheiro termina em alguma outra coisa que não .csv e separator_flag não for especificado, space é assumido.

Para saída, os mesmos quatro sinalizadores são reconhecidos como na entrada, e também tab, para valores separados pelo caractere de tabulacedilhaao.

Em entrada, múltiplos espacedilhaos e múltiplas tabulacedilhaões sucessivas contam como um separador simples. Todavia, múltiplas vírgulas, barras verticais, ou ponto-e-vírgulas são significativos. Sucessivas vírgulas, barras verticais, ou ponto-e-vírgulas (com ou sem intercalacedilhaão de espacedilhaos ou tabulacedilhaões) são considerados como tendo false entre os separadores. Por exemplo, 1234,,Foo é tratado da mesma forma que 1234,false,Foo. Em saídas, os átomos false são escritos como tais; uma lista [1234, false, Foo] é escrita 1234,false,Foo, e não é tentado colapsar a saída para 1234,,Foo.

Definicedilhaões para numericalio
=================================

 -- Funcedilhaão: read_matrix (NOMEFICHEIRO)
 -- Funcedilhaão: read_matrix (NOMEFICHEIRO, SEPARATOR_FLAG)
     Lê o ficheiro NOMEFICHEIRO e retorna seu conteúdo completo como uma matriz. Se SEPARATOR_FLAG não for especificado, o ficheiro é assumido como delimitado por espacedilhaos em branco.

     read_matrix infere o tamanho da matriz dos dados de entrada. Cada linha do ficheiro inicia uma linha da matriz. Se algumas linhas possuirem diferentes comprimentos, read_matrix reclama.

 -- Funcedilhaão: read_lisp_array (NOMEFICHEIRO, A)
 -- Funcedilhaão: read_lisp_array (NOMEFICHEIRO, A, SEPARATOR_FLAG)

     read_lisp_array exige que o array seja declarado através de make_array antes de chamar a funcedilhaão de leitura. (Isso obviamente é necessário para inferir a dimensão do array, que pode ser um problema para arrays com múltiplas dimensões.)

     read_lisp_array não verifica para ver se o ficheiro de entrada está de acordo com as dimensãoes do array; a entrada é lida como uma lista monótona, então o array é preenchido usando fillarray.

 -- Funcedilhaão: read_maxima_array (NOMEFICHEIRO, A)
 -- Funcedilhaão: read_maxima_array (NOMEFICHEIRO, A, SEPARATOR_FLAG)

     read_maxima_array requer que o array seja declarado através de array antes de chamar a funcedilhaão de leitura. (Isso obviamente é necessário para inferir a dimensão do array, que pode ser uma hassle para arrays com múltiplas dimensões.)

     read_maxima_array não verifica para ver se o ficheiro de entrada está de acordo com as dimensãoes do array; a entrada é lida como uma lista monótona, então o array é preenchido usando fillarray.

 -- Funcedilhaão: read_hashed_array (NOMEFICHEIRO, A)
 -- Funcedilhaão: read_hashed_array (NOMEFICHEIRO, A, SEPARATOR_FLAG)

     read_hashed_array trata o primeiro item sobre uma linha como uma chave hash, e associa o restante da linha (como uma lista) com a chava. Por exemplo, a linha 567 12 17 32 55 é equivalente a A[567]: [12, 17, 32, 55]$. Linhas não precisam ter o mesmo número de elementos.

 -- Funcedilhaão: read_nested_list (NOMEFICHEIRO)
 -- Funcedilhaão: read_nested_list (NOMEFICHEIRO, SEPARATOR_FLAG)

     read_nested_list retorna uma lista que tem uma sublista para cada linha de entrada. Linhas não precisam ter o mesmo número de elementos. Linhas vazias não são ignoradas: uma linha vazia retorna uma sublista vazia.

 -- Funcedilhaão: read_list (NOMEFICHEIRO)
 -- Funcedilhaão: read_list (NOMEFICHEIRO, SEPARATOR_FLAG)

     read_list lê todas as entradas em uma lista monótona. read_list ignora o caractere de fim de linha.

 -- Funcedilhaão: write_data (X, NOMEFICHEIRO)
 -- Funcedilhaão: write_data (OBJECT, NOMEFICHEIRO, SEPARATOR_FLAG)

     write_data escreve o objecto X no ficheiro NOMEFICHEIRO.

     write_data escreve matrizes da forma usual, com uma linha por fileira.

     write_data escreve arrays declarados do Lisp e do Maxima da forma usual, com um caractere de nova linha no final de todo pedacedilhao. Pedacedilhaos dimensionais muito grandes são separados por meio de novas linhas adicionais.

     write_data escreve arrays desordenados com uma chave seguida por a lista associada sobre cada linha.

     write_data escreve a lista seguinte com cada sublista em uma linha.

     write_data escreve uma lista monótona toda em uma linha.

     Se write_data anexa ao final ou abandona os excessos em seus ficheiros de saída é governado através da variável global file_output_append.