;-)

It didnt exactly do what I did, it just produced the numers I needed
in between, I had to add the filtering.

Then I compared the time, and yours is almost 40% quicker. Cool!
(First time I saw type hints in Clojure. :)

Now the main difference was the call to step. You did it tail call
optimised via recur, I didn't.
Not knowing how this is implemented, I used it for one more timing -
no statistics, just one run - no difference at all.

http://paste.lisp.org/+21BR/2

Thank you!, and I (probably) quit the web for today.

Bye and read you. alux


On 16 Feb., 17:43, Sean Devlin <francoisdev...@gmail.com> wrote:
> Interesting...  could you add a few test cases?  I want to make sure
> my implementation does what you expect.
>
> Thanks,
> Sean
>
> On Feb 16, 11:18 am, alux <alu...@googlemail.com> wrote:
>
> > I'm curious, but as you told me, I pasted my solution (with a lazy
> > stream), as annotation of my former program.
>
> >http://paste.lisp.org/+21BR/1
>
> > So, now I'll have a look at yours.
>
> > Thanks, and read you soooon.
>
> > alux
>
> > On 16 Feb., 14:32, Sean Devlin <francoisdev...@gmail.com> wrote:
>
> > > Alux,
> > > This is good progress, keep up the good work.  Here's my
> > > implementation w/Jarkko's suggestions built in.  Take a look at this
> > > AFTER you complete your next iteration :)
>
> > >http://gist.github.com/305521
>
> > > I've changed the following
>
> > > * Imported java.math.BigInteger
> > > * Used the instance? predicate to test if an object is a BigInteger in
> > > your big-int fn.
> > > * I added type hints to special-log.  This lets Clojure use the
> > > specific class methods for the object instead of reflection.  The
> > > result is the code is much faster.
> > > * removed the letfn and placed step in the normal let block.  There's
> > > no mutual recursion, so let will do the job.
> > > * Wrote the producing fn in terms of iterate, so the result is now a
> > > lazy list.
>
> > > Sean
>
> > > On Feb 16, 6:38 am, Jarkko Oranen <chous...@gmail.com> wrote:
>
> > > > On Feb 16, 12:26 pm, alux <alu...@googlemail.com> wrote:
>
> > > > > Hello,
>
> > > > > the current state of Conway's Prime Machine is 
> > > > > athttp://paste.lisp.org/+21BR
>
> > > > Instead of using a quoted list, a vector is more idiomatic in Clojure.
>
> > > > > I'l go on learning. The next state should be seperation of print and
> > > > > produce. Currently (conway-pm) doesnt return stuff. I dont know if
> > > > > Clojure can produce infinite lists, like Haskell, and print the items
> > > > > as they come.
>
> > > > It can. They're just called infinite sequences. For example, (iterate
> > > > inc 0) produces an infinite sequence of integers from 0 onwards. You
> > > > can also construct your own infinite sequences using the lazy-seq
> > > > macro in a pattern like the following:
>
> > > > (defn count-down [x]
> > > >     (lazy-seq (cons x (count-down (dec x))))) ; lazy-seq doesn't
> > > > actually evaluate the cons until it's requested
>
> > > > However, often you should start by looking at the core library and see
> > > > if there already exists a function to produce a list that you need,
> > > > and only afterwards construct things from scratch. For example,
> > > > "repeatedly" and "iterate" are common seq-producers, and "map" and
> > > > "filter" are used to transform them. They're all lazy, so infinite
> > > > seqs are not problematic.
>
> > > > There is one thing you need to look out for though: Never define a
> > > > global reference to an infinite seq. The items in a sequence are
> > > > cached, so if you define a global reference to the head, no part of
> > > > the seq will ever be garbage collected and its memory usage will be
> > > > unbounded.

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