I've got a problem with the symbol system: I want to use files.arc, but it uses the macro '$ to call mzscheme. The problem is that symbols passed to mzscheme are modified by the package system, so that ($ (mz-fun)) becomes ($ (<current-package>mz-fun)). This means that it's not possible to call mzscheme's 'mz-fun. Is there a way to make a symbol outside of the package system, i.e. '<>my-sym -> 'my-sym and not '<current-package>my-sym?
$ probably needs to demangle names by applying 'unpkg on them.
<User>tl: 'x
<User>x
<User>tl: (using <arc>v3-packages)
t
<User>tl: (unpkg 'x)
x
For that matter, while reviewing arc.arc, I noticed that there are quite a few file-related functions already exported from mzscheme into arc-space. I suspect bits of files.arc can be rewritten to use those functions instead.
Personally I think it's better to do something like this:
($.mzscheme-function param1 param2)
Then we can simply define $ as:
(mac $ (x)
`(seval ',(<arc>unpkg x)))
edit: pushed a version of files.arc on arc-f. To use, just (using <files>v1)
Specifically, arc.sh sets the environment variable "arc_dir" to the installation directory.
I would suggest making a batch file which sets the environment variable arc_dir properly before launching mzscheme -af as.scm ^^
Should probably be done correctly by providing an arc.bat I suppose, although the problem is always figuring out the installation directory... haven't hacked MSDOS batch files in a long time ^^
C:\User\Programming\Arc\arc3f\arc-f>set arc_dir=C:\User\Programming\Arc\arc3f\arc-f
C:\User\Programming\Arc\arc3f\arc-f>mzscheme -mf as.scm
Compiling arc.arc...
Use (quit) to quit, (tl) to return here after an interrupt.
<User>tl:
Unfortunately, (having learned Unix shell scripting), I never bothered to learn Windows batch files.
Also of note, arc.sh doesn't work in Cygwin:
$ sh arc.sh
> default-load-handler: cannot open input file: "c:/cygdrive/c/User/Programming/Arc/arc3f/arc-f/as.scm" (The system cannot find the path specified.; errno=3)
I pushed an untested arc.bat launcher on the anarki arc-f recently, although now that I've reviewed it it seems I used the wrong flag in the mzscheme invocation (-af instead of -mf). Could I ask you to check it out, and if so, could you check it out?
As for the cygwin stuff.... hmm. Maybe I should fix my broken WinXP machine...
@echo off
set arc_dir=C:\Program Files\ARCF
mzscheme -mf "%arc_dir%\as.scm"
This one worked for me. I'm not sure if removing the [][]'s from the file and making it windows line breaks mattered, but at least I had to move some ""'s around to get it to work.
Now just trying to get the launch-an-arc-script script working (from outside the repl). The script that is elsewhere on the website works on linux, but not windows ;). Damn pipes.
Out of curiousity: does it work even if you're on a different hard drive/directory as the installation drive/directory? The intent of that batch file is to allow you to launch Arc from anywhere, while still (1) able to access the current directory and (2) able to load library files from the arc installation directory
E:\> copy con tmp.arc
(prn "hello world!")
^Z <---- that's a control-Z
E:\> "C:\User\Programming\Arc\arc3f\arc-f\arc.bat"
Use (quit) to quit, (tl) to return here after an interrupt.
<User>tl: (using <files>v1)
t
<User>tl: (ls)
("tmp.arc") <--- you should get a list of files and stuff in the current directory, including tmp.arc
<User>tl: (load "tmp.arc")
hello world!
nil
<User>tl:
I think it's quite confusing to have two different (and incompatible) implementations of Arc in the same repository. What do you think about moving arc-f in a different repository?
I could, if only I could figure out how to automatically give write access to the repository to everyone, the way Anarki is always write-accessible to everyone. T.T Bit of a hassle to have people request for access and then have to grant it to them.
Yes. I don't intend to have html.arc, user.arc and asv.arc to load on startup, instead, I expect the user to have to explicitly do:
(using <asv>v1)
....which will load asv.arc, and asv.arc will then have dependencies on <html>v1 and <user>v1. If you have an app that needs <asv>v1, then put the (using <asv>v1) declaration in your app's source.
After all, not everyone will use Arc for web apps ^^
edit:
Also, as.scm attempts to precompile arc.arc into a scheme file. It loads those faster. I'm wondering if it would be possible to integrate the precompilation so that any 'using metacommand will precompile all libraries, just for the faster load times.
It would probably be better too to figure out what mzscheme's equivalent to fasl files is, and target that instead of just a .scm file.