I have also noticed that when I set a folder to be writeable - which is necessary for some of the scripts I am running - links creates caches of whichever page is loaded by the folder, which it will then load from. I have had a look at the documentation and noticed that it's possible to set a precompiler for Links that does this, but I have not set this anywhere.
precompile=<filename> precompile and store a cached version of <filename> I am however using the talked about include perl script which is called by a preprocessor. However, I didn't think that this would create such a cache. Has anyone else noticed this? Anyone know a way around this? On Mon, Mar 8, 2010 at 3:02 PM, Simon Vansintjan <[email protected]>wrote: > Thanks Alex, >> >> that did the trick (and thanks for the pointer on pure and impure). >> >> However, now I've stumbed across a second problem, I've implemented >> writeToFile as >> >> "writeToFile", >> (p2 (fun file str -> >> let value = >> try >> let oc = open_out (unbox_string file) in >> output_string oc (unbox_string str); >> flush oc; >> close_out oc; >> "write success" >> with e -> >> raise e >> in >> box_string value), >> datatype "(String, String) ~> ()", >> IMPURE); >> >> Which seems to work fine for writing a file. In an editor the file looks >> normal, but when Links parses the file I get a syntax error at the end of >> the first line. As an experiment I deleted all the new lines and tabs, and >> then the syntax error disappeared. I guess this is because Links' Strings >> are stored explicitly with the newlines and tabs? Is there a way to escape >> this? Any ideas? >> >> On Mon, Mar 8, 2010 at 6:44 AM, Alexander Ulrich < >> [email protected]> wrote: >> >>> Hi Simon, >>> >>> On 3/8/10 1:33 AM, Simon Vansintjan wrote: >>> > Hey Sam, I've been trying to read the first 100 lines from a file with >>> the >>> > following code (hoping to replace the 100 with some way to count how >>> large a >>> > file is - which is another thing I have been having issues with) >>> > >>> > "readFromFile", >>> > (p1 (fun file -> >>> > let value = >>> > let ic = open_in (unbox_string file) >>> > and buf = "" in >>> > really_input ic buf 0 100; >>> > buf >>> > in >>> > box_string buf), >>> > >>> > datatype "(String) ~> (String)", >>> > PURE); >>> > >>> > which compiles fine, but when I run it in Links I get the following >>> error: >>> > >>> > *** Error: Invalid_argument("really_input") >>> >>> The length of the string "buf" must correspond to the number of bytes >>> you want to read into it. You can't read 100 bytes into a string of >>> length 0. "Raise Invalid_argument "really_input" if pos and len do not >>> designate a valid substring of buf." (OCaml stdlib reference). >>> >>> and buf = String.create 100 in >>> >>> Besides, your function "readFromFile" has certainly no SQL equivalent >>> and should therefore be marked IMPURE. >>> >>> Alex >>> >>> >>> _______________________________________________ >>> links-users mailing list >>> [email protected] >>> http://lists.inf.ed.ac.uk/mailman/listinfo/links-users >>> >>> >> >
_______________________________________________ links-users mailing list [email protected] http://lists.inf.ed.ac.uk/mailman/listinfo/links-users
