Tassilo Horn <[email protected]> writes:
Hi again,
I've just debugged it a bit further and now I'm even more confused...
> So my reloading function only needs to bind *serialization-bindings*
> to a map from graph id to graph, and it should work.
>
> (defn tg-read [str & gs]
> (binding [*serialization-bindings* (into {} (map (fn [g] [(id g) g])
> gs))
> *print-dup* true]
(binding [*print-dup* false] (swank.core/break)) ;; DEBUG
> (read-string str)))
So now I've replaced the println in tg-read with a (swank.core/break) to
be able to inspect the environment. And that's what I get:
--8<---------------cut here---------------start------------->8---
core> (tg-pr (vertex (rg) 1))
"#=(de.uni-koblenz.funtg.core/vertex
(de.uni-koblenz.funtg.core/*serialization-bindings*
\"c06de1c7-f4ec0906-21cfbc86-28c31aa1\") 1)"
core> (tg-read (tg-pr (vertex (rg) 1)) (rg))
; Now in the break's environment
break> (swank.core/local-bindings)
{str "#=(de.uni-koblenz.funtg.core/vertex
(de.uni-koblenz.funtg.core/*serialization-bindings*
\"c06de1c7-f4ec0906-21cfbc86-28c31aa1\") 1)",
gs (#<RouteMapImpl
de.uni_koblenz.jgralabtest.schemas.greqltestschema.impl.std.RouteMapImpl@5fbb71ac>)}
break> (*serialization-bindings* "c06de1c7-f4ec0906-21cfbc86-28c31aa1")
#<RouteMapImpl
de.uni_koblenz.jgralabtest.schemas.greqltestschema.impl.std.RouteMapImpl@5fbb71ac>
break> (vertex (*serialization-bindings* "c06de1c7-f4ec0906-21cfbc86-28c31aa1")
1)
#<VillageImpl v1: localities.Village>
break> (de.uni-koblenz.funtg.core/vertex
(de.uni-koblenz.funtg.core/*serialization-bindings*
"c06de1c7-f4ec0906-21cfbc86-28c31aa1")
1)
#<VillageImpl v1: localities.Village>
; Continue from breakpoint
IllegalArgumentException: No implementation of method: :vertex of
protocol: #'de.uni-koblenz.funtg.core/IDOps found for class:
clojure.lang.PersistentList
--8<---------------cut here---------------end--------------->8---
But the last expression is exactly what the reader should evaluate and
it works fine in the breakpoint. Why doesn't it work inside
read-string?
Bye,
Tassilo
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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