HI Andy,
Thanks for your reply.

On Wed, Aug 27, 2014 at 8:29 PM, Andy Fingerhut <andy.finger...@gmail.com>
wrote:

> FYI, if you *want* warnings about redefinition of functions, or any vars
> in general, the Clojure lint tool Eastwood does that, among other things:
>
>     https://github.com/jonase/eastwood
>
> Andy
>
>
> On Wed, Aug 27, 2014 at 7:32 AM, Tassilo Horn <t...@gnu.org> wrote:
>
>> Hemant Gautam <gettingerr...@gmail.com> writes:
>>
>> Hi Hemant,
>>
>> > This is the code
>> >
>> > (ns clojure_begins_19_08_2014.core)
>>
>> Use hyphens instead of underscores for namespace and var names.
>>
>> > (defn first-fn[x]
>> >   (print x))
>> >
>> > (defn first-fn[x]
>> >   (print "Value of x with String " x))
>> >
>> > (first-fn 10)
>> >
>> > See, above code consists of two function with same name and with same
>> > number of arguments.  When I call first-fn, the function declared
>> > later gets called. I get output as:
>> >
>> > Value of x with String  10
>> > nil
>> >
>> > So can any one explain how this thing is happening
>>
>> The second definition overrides the first one.  That's possible in
>> Clojure because when developing you usually have a REPL connection and
>> add and change functions in the live system as you go.
>>
>> > and also explain how we can have same function written 2 times in a
>> > same namespace.
>>
>> You can't.  Or more precise, you can't after the file has been loaded.
>> Note that when your file above is loaded, in between of the two defns
>> you could call (first-fn 10) which would only print "10" because in this
>> short region, the first version is active.
>>
>> Possibly one could enhance the Clojure compiler or reader so that it
>> emits a warning in case a function is defined twice in the same file and
>> namespace.  But since you can also have multiple files defining stuff in
>> the same namespace, I guess intended overriding during a REPL session
>> and unintended overriding like above may become hard to distinguish.
>>
>> Bye,
>> Tassilo
>>
>> --
>> 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 unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to