addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscontroller-playcrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramFill 1linklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonprintShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo


Most query languages are unpleasant, especially for beginners. At RethinkDB we're trying to write one that isn't. We've ended up implementing it as a Domain Specific Language for Ruby, and this talk is about what we've learned along the way. What makes a query
language good? What makes a DSL good? What parts of Ruby make it easy, and what parts make it hard? What should you watch out for if you want to write a DSL of your own?

* Why we settled on a DSL instead of a string-based query language.

* Error reporting and making syntax discoverable.

* Classic DSL problems: variable capture, namespace pollution, having to learn a new syntax.

* Ruby-specific problems: Can't overload operators based on the righthand side, can't overload some key operators, no `parameters` call on Procs in Ruby 1.8.

* Things Ruby provides that are really nice: `caller`, block syntax, etc.

Michael Lucy Bio:
Michael Lucy is an engineer at RethinkDB working on the query language.

Join or login to comment.

  • JasonOng

    Only just found out about this. Were there slides/video online to catch up with?

    November 14, 2012

  • James D.

    Thanks to Michael Lucy for an interesting presentation. Good luck with the release of RethinkDB.

    November 9, 2012

15 went

Our Sponsors

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy