On Dec 9, 6:47 am, Ant <[EMAIL PROTECTED]> wrote:
> Hi all,
>
> I've just started looking with interest at the language, and have
> decided to port some of my smaller programs and scripts to Clojure as
> a way of getting to know the language. I am stumbling over Strings at
> the moment, as I am trying to read a file. I have tried the following:
>
> user=> "C:\dev\java\clojure\clj-repl.bat"
> ")\n"
> user=> java.lang.Exception: Invalid token: C:
> java.lang.Exception: ReaderError:(8,1) Invalid token: C:
> at clojure.lang.LispReader.read(LispReader.java:164)
> at clojure.lang.Repl.main(Repl.java:68)
> Caused by: java.lang.Exception: Invalid token: C:
> at clojure.lang.LispReader.interpretToken(LispReader.java:266)
> at clojure.lang.LispReader.read(LispReader.java:156)
> ... 1 more
>
> OK, so that didn't work. I read the docs on Strings:
>
> Strings - Enclosed in "double quotes". May span multiple lines.
> Standard Java escape characters are supported.
>
> So next I tried, thinking it may be the backslashes that were the
> problem, and needed escaping:
>
> "C:\\dev\\java\\clojure\\clj-repl.bat"
> "\n"
> user=> java.lang.Exception: Invalid token: C:
> java.lang.Exception: ReaderError:(10,1) Invalid token: C:
> at clojure.lang.LispReader.read(LispReader.java:164)
> at clojure.lang.Repl.main(Repl.java:68)
> Caused by: java.lang.Exception: Invalid token: C:
> at clojure.lang.LispReader.interpretToken(LispReader.java:266)
> at clojure.lang.LispReader.read(LispReader.java:156)
> ... 1 more
>
> Same error, and it seems to me that the double quoted string isn't
> being accepted as a string literal. I tried converting the path to
> forward slashes:
>
> java.lang.Exception: No such namespace: C:/dev/java/clojure
> clojure.lang.Compiler$CompilerException: NO_SOURCE_FILE:0: No such
> namespace: C:/dev/java/clojure
> at clojure.lang.Compiler.analyze(Compiler.java:3713)
> at clojure.lang.Compiler.analyze(Compiler.java:3671)
> at clojure.lang.Compiler.eval(Compiler.java:3895)
> at clojure.lang.Repl.main(Repl.java:75)
> Caused by: java.lang.Exception: No such namespace: C:/dev/java/clojure
> at clojure.lang.Compiler.resolveIn(Compiler.java:3998)
> at clojure.lang.Compiler.resolve(Compiler.java:3972)
> at clojure.lang.Compiler.analyzeSymbol(Compiler.java:3955)
> at clojure.lang.Compiler.analyze(Compiler.java:3686)
> ... 3 more
>
> So it seems that this isn't being treated as a string at all! It
> thinks that the slashes are denoting a namespace. What am I missing
> here?
I think the reader gets confused after your initial "C:\dev\java
\clojure\clj-repl.bat"
If you start the repl again and try the string with \\ it works fine.
Also, when the reader gets confused by the above string, it seems to
miss the " at the end. If you enter a " by itself it seems to right
itself:
$ java -jar clojure.jar
Clojure
user=> "C:\dev\java\clojure\clj-repl.bat"
java.lang.Exception: Unsupported escape character: \d
java.lang.Exception: ReaderError:(1,1) Unsupported escape character:
\d
at clojure.lang.LispReader.read(LispReader.java:164)
at clojure.lang.Repl.main(Repl.java:68)
-- snip --
user=> "C:\\dev\\java\\clojure\\clj-repl.bat"
"\n"
user=> java.lang.Exception: Invalid token: C:
java.lang.Exception: ReaderError:(2,1) Invalid token: C:
at clojure.lang.LispReader.read(LispReader.java:164)
at clojure.lang.Repl.main(Repl.java:68)
Caused by: java.lang.Exception: Invalid token: C:
at clojure.lang.LispReader.interpretToken(LispReader.java:266)
at clojure.lang.LispReader.read(LispReader.java:156)
... 1 more
-- snip --
user=> "
" \n"
user=> "C:\\dev\\java\\clojure\\clj-repl.bat"
"C:\\dev\\java\\clojure\\clj-repl.bat"
user=>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---