             ctx.resetAssignTo()
             precs)
       else
-        ast.label = 'const'
-        precs: [(cond_ (jsBinary "===",
-            (jsAccess matched, "symbol"), toJsString ast.symbol))]
+        commedAtom ast, ->
+          ast.label = 'const'
+          precs: [(cond_ (jsBinary "===",
+              (jsAccess matched, "symbol"), toJsString ast.symbol))]
 
     matchAst expression
   else

retrieve = (expression, newForm) ->
  expression.tea = newForm.tea
  expression.malformed = newForm.malformed
  if newForm.tea?.type.origin is newForm
    markOrigin newForm.tea.type, expression


ms['`'] = ms_quote = (ctx, call) ->
  expression = firstOrCall _arguments call

  commedAtom = (atom, otherwise) ->
    if (_symbol atom)[0] is ','
      identifier = token_ (_symbol atom)[1...]
      compiled = termCompile ctx, identifier
      retrieve atom, identifier
      compiled
    else
      otherwise()

  if ctx.assignTo()

    matchAst = (ast) ->
