Clojure does "know" the type -- it knows that it is a string, rather than a number, and it does not support doing arithmetic operations on strings, hence the error.
Whereas Perl would automatically convert from a string to a number in a case like this, Clojure does not. One could argue that such auto-conversion of types, while convenient in many cases in Perl, is also a source of errors in programs. Andy On May 19, 2012, at 1:05 AM, Ankit Goel wrote: > Thanks a lot for the help Meikel and Jim. > @ Meikel: it worked great as per your suggestion. > > I was just hoping it would be a bit more dynamic and infer the types!! > > On May 18, 11:48 pm, "Jim - FooBar();" <jimpil1...@gmail.com> wrote: >> Try wrapping your if statement in a let with a binding : [k >> (Integer/parseInt n) ] >> and then use k from then on....as Ankit said, arguments passed from cmd >> are always strings... >> >> Jim >> >> On 18/05/12 07:39, Ankit Goel wrote: >> >> >> >> >> >> >> >>> Hi, >> >>> I have recently started learning clojure and have been setting up >>> leiningen for managing projects. >>> I create a new project using "lein new" and modified the "src/ >>> factorial/core.clj" file to contain the following code >> >>> (ns factorial.core >>> (:gen-class)) >> >>> (defn fact [n] >>> (if (= n 1) >>> 1 >>> (* n (fact (- n 1))))) >> >>> (defn -main [n] >>> (fact n)) >> >>> This code runs fine in the REPL. However, when i run the jar file >>> obtained after running "lein uberjar" i get the following error: >> >>> "Exception in thread "main" java.lang.ClassCastException: >>> java.lang.String cannot be cast to java.lang.Number" >> >>> Why is there this difference in behavior between interactive and >>> compiled code? >> >>> Thanks, >> >>> Ankit > > -- > 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 > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- 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 Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en