[GAP Forum] Utility functions for reading files

Matan Ziv-Av matan at svgalib.org
Mon Jan 20 12:29:28 GMT 2014


Hello,

When people distribute data in GAP format, they sometimes[1][2] do it 
using files that can be used with the Read() function, assigning the 
results to some predetermined named variables. This introduces a few 
problems, such as when wanting to read the results from a few files into 
a list, or when trying to read the results from within a function.

Two examples:

gap> PrintTo("file","a:=1;\n");
gap> b:=function() Read("file"); return a; end;;
Syntax error: warning: unbound global variable
b:=function() Read("file"); return a; end;;
                                     ^

Or:

gap> a:=2;
2
gap> b:=function() local a; a:=3; Read("file"); return a; end;;
gap> b();
3
gap> a;
1


I think that including the following counterparts to ReadAsFunction() 
might allow people to distribute the data in a more convenient way.

ReadAsList:=function(n)
   local f,e;
   f:=InputTextFile(n);
   e:=ReadAll(f);
   CloseStream(f);
   return EvalString(Concatenation("[",e,"]"));
end;


ReadAsExpression:=function(n)
   local f,e;
   f:=InputTextFile(n);
   e:=ReadAll(f);
   CloseStream(f);
   return EvalString(e);
end;



[1] http://math.shinshu-u.ac.jp/~hanaki/as/
[2] http://www.math.tu-dresden.de/~reichard/schur/
-- 
Matan.




More information about the Forum mailing list