Actually, looking at the readme, I can see the code you were trying to use. Sorry, I'm not sure how I didn't catch that before, but I've fixed it.
Zach On Wed, Jul 31, 2013 at 10:17 AM, Zach Tellman <ztell...@gmail.com> wrote: > Hi Ezra, > > This is admittedly a little confusing, but you're hinting 's' with the > type of the *element*. Here you've created a sequence containing a single > 'ints-and-floats' struct, so you'd want to do this: > > user> (v/get-in s [0 :floats 4]) > 4.0 > user> (v/get-in s [0]) > {:ints (0 1 2 3 4 5 6 7 8 9), :floats (0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 > 9.0)} > > I'll try to make this clearer in the documentation. Let me know if you > have any other questions. > > Zach > > > On Wed, Jul 31, 2013 at 10:10 AM, Ezra Lee <lee.e...@gmail.com> wrote: > >> Hi, >> I'm trying out vertigo and hoping you can help me figure out what I am >> missing, I get an error when I use get-in: >> >> ; nREPL 0.1.8-preview >> user> (use 'vertigo.structs) >> nil >> user> (def-typed-struct ints-and-floats :ints (array uint32 10) :floats >> (array float32 10)) >> #'user/ints-and-floats >> user> (def x {:ints (range 10) :floats (map float (range 10))}) >> #'user/x >> user> (require '[vertigo.core :as v]) >> nil >> user> (def ^:ints-and-floats s (v/marshal-seq ints-and-floats [x])) >> #'user/s >> user> (v/get-in s [:floats 4]) >> IllegalArgumentException Invalid field '4' for type ints-and-floats >> vertigo.core/validate-lookup (core.clj:177) >> user> (v/get-in s [4 :floats]) >> IllegalArgumentException java.nio.Buffer.position (Buffer.java:216) >> >> Thanks, >> Ezra >> >> On Tuesday, July 9, 2013 11:56:03 PM UTC-4, Zach Tellman wrote: >>> >>> Last year, I gave a talk at the Conj on my attempt to write an AI for >>> the board game Go. Two things I discovered is that it was hard to get >>> predictable performance, but even once I made sure I had all the right type >>> hints, there was still a lot of room at the bottom for performance >>> improvements. Towards the end [1], I mentioned a few ideas for >>> improvements, one of which was simply using ByteBuffers rather than objects >>> to host the data. This would remove all the levels of indirection, giving >>> much better cache coherency, and also allow for fast unsynchronized >>> mutability when the situation called for it. >>> >>> So, ten months and several supporting libraries [2] [3] later, here it >>> is: >>> https://github.com/**ztellman/vertigo<https://github.com/ztellman/vertigo> >>> >>> At a high level, this library is useful whenever your datatype has a >>> fixed layout and is used more than once. Depending on your type, it will >>> give you moderate to large memory savings, and if you're willing to forgo >>> some of core library in favor of Vertigo's operators, you can get >>> significant performance gains on batch operations. And, in the cases where >>> performance doesn't matter, it will behave exactly like any other Clojure >>> data structure. >>> >>> I want to point out that something like this would be more or less >>> impossible in Java; reading from an offset in a ByteBuffer without the >>> compile-time inference and validation provided by this library would be >>> pointlessly risky. There's not a lot of low-level Clojure libraries, but >>> there's an increasing amount of production usage where people are using >>> Clojure for performance-sensitive work. I'm looking forward to seeing what >>> people do with Vertigo and libraries like it. >>> >>> Zach >>> >>> [1] http://www.youtube.com/**watch?feature=player_** >>> detailpage&v=v5dYE0CMmHQ#t=**1828s<http://www.youtube.com/watch?feature=player_detailpage&v=v5dYE0CMmHQ#t=1828s> >>> [2] >>> https://github.com/ztellman/**primitive-math<https://github.com/ztellman/primitive-math> >>> [3] >>> https://github.com/**ztellman/byte-streams<https://github.com/ztellman/byte-streams> >>> >> -- >> -- >> 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 a topic in the >> Google Groups "Clojure" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/clojure/BayfuaqMzvs/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- -- 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/groups/opt_out.