Skip to content

Instantly share code, notes, and snippets.

@jackfirth
Last active October 13, 2015 21:16
Show Gist options
  • Save jackfirth/543d9832ab8b4b1e7029 to your computer and use it in GitHub Desktop.
Save jackfirth/543d9832ab8b4b1e7029 to your computer and use it in GitHub Desktop.
  • Use xrepl when developing outside DrRacket. Set to automatically start up whenever racket is run at command line.
  • racket-mode for emacs development
  • #lang envy for environment variable configuration
  • #lang debug for "printf debugging"
  • #lang sweet-exp for prettifying requires and provides, or other simple pieces of code where parens are just noise (can be partially used in a file, doesn't need to apply to the whole file)
  • #lang reprovide for modules that just require and provide other modules to group them together
  • Use #lang racket/base instead of #lang racket for libraries, packages, and other re-usable pieces of code, to reduce dependencies
  • Use the -lib packages of libraries for applications to reduce dependencies
  • When designing libraries, avoid documenting and exposing subcollections to allow more flexibility for the library's code to shift around
  • When designing libraries, stick non-exposed modules into a /private subcollection to make any code depending on internals stick out like a sore thumb
  • Typed racket where possible, contracts always barring exceptional circumstances
  • Use Travis CI with Greg Hendershott's travis ci script for racket
  • Use doc-coverage to enforce all exports of a library are documented (great if you run the test in CI, contributors will have to provide docs to add features)
  • Use cover with CI and a service like Coveralls or Codecov (support soon!) for test coverage
  • Use deprecated from scribble/manual for deprecation warnings in docs
  • Use jack-scribble-examples (once I've stabilized it) for examples in docs
  • Put new features in a library foo in an unstable/foo collection before moving them into the main collection. This is useful for serious libraries where you care about backwards compatibility
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment