nth is used by the clojure printer (see print-method). Try the following 
code: (do (ConsCell. 1 nil) :ok)

It looks like you have to implement Sequential in order to get nth working 
on your datasctructure.

суббота, 28 июля 2012 г., 10:33:48 UTC+6 пользователь JvJ написал:
>
> I'm trying to create a new ISeq type, just to try to get the hang of 
> extending sequences.  It's not working, though.  As far as I can tell, I've 
> implemented all necessary methods.  However, I still get an error when 
> attempting to create an instance of the type.
>
> When I enter the following in the REPL:
> (ConsCell. 1 nil)
>
> The repl complains about the nth function not being supported.  However, 
> I'm not sure how to go about implementing it.  Any ideas?
>
> (deftype ConsCell [car cdr]
>   clojure.lang.ISeq
>   (first
>     [this] (-> this .car))
>   (next
>     [this] (-> this .cdr))
>   (more
>     [this] (-> this .cdr))
>   (cons
>     [this obj] (ConsCell. obj this))
>   (seq
>     [this] this)
>   (equiv
>     [this other] false)
>   (count
>     [this]
>     (if (nil? (-> this .cdr))
>       1
>       (inc (.count cdr))))
>
>    ;; Can't implement nth here, since it's not a member of the interface
>   ;(nth
>     ;[this n]
>     ;(if (zero? n)
>       ;(-> this .car)
>       ;(.nth cdr (dec n))))
>   )
>

-- 
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