Giter Club home page Giter Club logo

taggp's People

Contributors

kephale avatar lspector avatar thelmuth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

taggp's Issues

better ways of refactoring

I thought I'd use this "issue" more as a discussion.

If you take a look at the newly refactored tags.clj and recursion.clj, you'll see that recursion.clj redefines all of eval-with-tagging. I had tried to abstract out all of the consequents of the conditional, so that eval-with-tagging for each condition would be calling

(cond (pred-fn? expression) (eval-pred-fn expression tag-space steps default-value)
      (another-pred-fn? expression) (trampoline eval-another-pred-fn expression tag-space steps default-value)
...

where the trampolined expressions replaced the recur call. Unfortunately this lead to stack over flows in the else clause, presumably due to the accumulation of calls on the stack from the un-trampolined call in its loop. I thought this might be a more elegant way to go, so instead of copying and pasting over the entire eval-with-tagging function, we could just modify the constituent eval functions (thereby also limiting the number of newly introduced bugs). However, to make this work, I would need to rethink the recursive calls in eval-with-tagging to handle the evaluation with args (presumably by carrying in it some extra variables to hold the deferred function and a queue of its args).

Anyone have any better thoughts on this matter?

Recursion Elimination argument?

Should recursion elimination be specified as a global? As an argument to evolve? The type is currently hardcoded in eval-with-tagging.

generation data

Create a new namespace to store generation data to be called in in core.clj. This will include things like the best individual, average error, etc. New features can then be added in an experimental namespace in the style of recursion.clj without having to alter the entire evolve function.

recursion elimination

Change taggp to properly handle untagging-based recursion elimination, both with real untagging and with default replacement.

testing

Add system-wide tests in addition to unit test for new features.

Unit tests can be attached to functions in metadata (I'm currently having difficulty pulling this off).

Where to put larger system tests?

random-seed

Implement random-seed hack thingie so random is truly random.

So far only a random-seed global has been added to the globals namespace.

deep recursion issue

Rewrite taggp so that it no longer eats stack frames and dies for deep recursion.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.