 class RDBOp extends RDBVal
     constructor: (optargs, args...) ->
         self = super()
-        self.args = (rethinkdb.expr arg for arg in args)
+        self.args =
+            for arg,i in args
+                if arg isnt undefined
+                    rethinkdb.expr arg
+                else
+                    throw new RqlDriverError "Argument #{i} to #{@st || @mt} may not be `undefined`."
         self.optargs = translateOptargs(optargs)
         return self
 

            i++

        body = func(args...)
        argsArr = new MakeArray({}, argNums...)
        return super(optargs, argsArr, body)


                    datum.setType Datum.DatumType.R_STR
                    datum.setRStr @data
                else
                    throw new RqlDriverError "Cannot convert `#{@data}` to Datum."
        term = new Term
        term.setType Term.TermType.DATUM
        term.setDatum datum
