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

Reply via email to