| I got arc2 to work on mzscheme 372. Because mzscheme 372 responds to arc2 with a cryptic error containing nothing resembling a line number, I had to find a different way to locate the problem. After looking through ac.scm for a while, I found a solution. I loaded ac.scm in mzscheme, and then did this: (acompile "arc.arc")
What acompile does is compile .arc files into .scm files. Anyway, mzscheme spat out the same error message, but it left a file called arc.arc.scm in the arc2 folder. When it hit the error, rather than deleting the file, it stopped in the middle and left what it had already done. By recognizing the patterns left by certian macroexpansions, I was able to find the last part of arc.arc that it had successfully compiled. I managed to fix it by looking for things that appeared in the first part that failed that didn't appear in the part that succeeded. I did the same thing to the files mentioned in libs.arc, and was able to get just about everything up and running. I gave up on news.arc, though, as the macros are nested way too deep in there for me to untangle at the moment.So, I ran diff arc2 arc2-fixed
and I think the diffs make it pretty obvious what mzscheme was reacting to. Now the question is, why does it reject that? diff arc2/arc.arc arc2-fixed/arc.arc
721,724c721,724
< (let expander
< (fn (f var name body)
< `(let ,var (,f ,name)
< (after (do ,@body) (close ,var))))
---
> (let expander nil
> (def expander (f var name body)
> `(let ,var (,f ,name)
> (after (do ,@body) (close ,var))))
diff arc2/html.arc arc2-fixed/html.arc
183,188c183,189
< (let pratoms (fn (body)
< (if (or (no body)
< (all [and (acons _) (isnt (car _) 'quote)]
< body))
< body
< `((pr ,@body))))
---
> (let pratoms nil
> (def pratoms (body)
> (if (or (no body)
> (all [and (acons _) (isnt (car _) 'quote)]
> body))
> body
> `((pr ,@body))))
diff arc2/libs.arc arc2-fixed/libs.arc
8c8,9
< "news.arc"))
---
> ;"news.arc"
> ))
|