Oh!

 I guess the REPL message was saying that it can't cast a Java string as a
Clojure function.

The parenthesis. I was trying to invoke a string. How dumb of me.

Lesson learned. Also, learned to try it in the browser for a more familiar
type error message.

I wonder how ClojureScript would be like if it didn't have the Lisp style
syntax. I think it's been the biggest part of the learning curve.

Thank you :)


On Mon, Feb 16, 2015 at 7:44 PM, Dave Della Costa <ddellaco...@gmail.com>
wrote:

> Hi Marc,
>
> This isn't an interop issue but simply is arising from the fact that you
> are attempting to call a string as though it were a function, and it is
> getting caught at runtime.
>
> To compare, I tried the same code in ClojureScript and I saw: "Uncaught
> TypeError: undefined is not a function" which is roughly the same
> (although I'm a bit surprised by the "undefined" and would have expected
> that to be a string).
>
> In any case, I'm not sure what your original goal was, but maybe this
> was what you were looking for?
>
> > (map #(name (key %)) f)
>
> That is, you don't need to wrap this in a call to 'str,' name already
> returns a string.
>
> DD
>
> On 2015/02/17 11:15, Marc Fawzi wrote:
> > As a new user to ClojureScript who has not programmed in Clojure or any
> > JVM-to-JS environment this comes to me as a huge surprise!
> >
> > (it shouldn't if I had thought things more deeply, but don't have the
> > luxury of infinite ramp up time)
> >
> > user=> (def f {"a" "1" "b" "2"})
> >
> > user=> (map #((name (key %))) f)
> >
> > ClassCastException java.lang.String cannot be cast to clojure.lang.IFn
> > user/eval1212/fn--1213
> (b43f5f5d46b2bd87480559901c3a9d087879416a-init.clj:1)
> >
> >>>> Is that a Java/Clojure Interop error? I suppose if the REPL throws
> > then I'll also see this error or a variant of it IN THE BROWSER ?
> >
> > The error is resolved if I do this
> >
> > (map #(str (name (key %))) f)
> >
> > I thought Clojure is dynamically typed and I understand for Java interop
> > on the server if we have to do this but why couldn't we get away with it
> > in the browser environment?
> >
> > My limited understanding is that str here is like String(val) in JS,
> > which is almost never needed.
> >
> >
> > Please enlighten, whomever understands the interop stuff and why as
> > front end developers we have to carry that burden?
> >
> >
> >
> >
> > --
> > Note that posts from new members are moderated - please be patient with
> > your first post.
> > ---
> > You received this message because you are subscribed to the Google
> > Groups "ClojureScript" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> > an email to clojurescript+unsubscr...@googlegroups.com
> > <mailto:clojurescript+unsubscr...@googlegroups.com>.
> > To post to this group, send email to clojurescript@googlegroups.com
> > <mailto:clojurescript@googlegroups.com>.
> > Visit this group at http://groups.google.com/group/clojurescript.
>
> --
> Note that posts from new members are moderated - please be patient with
> your first post.
> ---
> You received this message because you are subscribed to the Google Groups
> "ClojureScript" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojurescript+unsubscr...@googlegroups.com.
> To post to this group, send email to clojurescript@googlegroups.com.
> Visit this group at http://groups.google.com/group/clojurescript.
>

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to