+(define-builtin set (symbol value)
+ (concat "(" symbol ").value = " value))
+
+(define-builtin fset (symbol value)
+ (concat "(" symbol ").function = " value))
+
+(define-builtin boundp (x)
+ (js!bool (concat "(" x ".value !== undefined)")))
+
+(define-builtin symbol-value (x)
+ (js!selfcall
+ "var symbol = " x ";" *newline*
+ "var value = symbol.value;" *newline*
+ "if (value === undefined) throw \"Variable `\" + symbol.name + \"' is unbound.\";" *newline*
+ "return value;" *newline*))
+
+(define-builtin symbol-function (x)
+ (js!selfcall
+ "var symbol = " x ";" *newline*
+ "var func = symbol.function;" *newline*
+ "if (func === undefined) throw \"Function `\" + symbol.name + \"' is undefined.\";" *newline*
+ "return func;" *newline*))
+
+(define-builtin symbol-plist (x)
+ (concat "((" x ").plist || " (ls-compile nil) ")"))
+
+(define-builtin lambda-code (x)
+ (concat "(" x ").toString()"))
+
+
+(define-builtin eq (x y) (js!bool (concat "(" x " === " y ")")))
+(define-builtin equal (x y) (js!bool (concat "(" x " == " y ")")))