Skip to content

Instantly share code, notes, and snippets.

@smosher
Last active December 15, 2015 20:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save smosher/5318887 to your computer and use it in GitHub Desktop.
Save smosher/5318887 to your computer and use it in GitHub Desktop.
todo list for Io

Purpose

  • To set up a useful, non-toxic Io base environment for development.
  • To promote (and simplify) the better practices.

Things to investigate

  • Complete knowledge of scoping.
  • Embedded docs.
  • Testing.
  • "SmallTalk died because it's too easy to make a mess."—testing is not enough imo, other practices and tooling are important.

Convenience

  • Add match DSL (will become important).
  • Map and List constructors DSLs (check).
  • List slices (in one of the starred repos).
  • Consider List expand and List separate from splattercoding blog.
  • Consider quote operator from splattercoding blog.

Development Framework

  • extendWithNewProto—come up with a better name for this.
  • Build on match to do dynamic dispatch, with DSL or block/method support.
  • Determine the best way to chase a slot down proto lists and make it easy.
  • Consider chasing the broken slot automatically upon test failure.

Notes

  • When calling doMessage on call sender, send it to a clone instead. (Anti-toxicity. The base language violates this in an acceptable way, but I prefer to have it isolated and use the return to communicate with the current scope.)
  • Constructors must be part of the relevant type, not part of Object. (eg. Map curlyBrackets() is the Map constructor, not Object curlyBrackets()).
  • Patch objects by adding to the proto list with new functionality.
  • When using operators/DSLs make sure they're executed prior to loading the script: http://stackoverflow.com/questions/10383065/why-does-the-io-repl-and-the-interpreter-give-me-two-different-values (check to see if this has been changed.)

Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment