// src/framework/shadowlisp/primitives/SlNil.ts
//
// Vision 49: Nil/null element - IS a Matrix component
//
// <sl-nil/> evaluates to null (the empty list / false).

import type { SExpr } from '../../../lisp/SExpr';
import { SlMatrixElement } from '../SlMatrixElement';

/**
 * SlNil - Nil/null element that IS a Matrix component.
 *
 * @example
 * <sl-nil/>   => null
 */
export class SlNil extends SlMatrixElement {
  async evalSelf(_env: SExpr[]): Promise<SExpr> {
    return null;
  }

  toSExpr(): SExpr {
    return null;
  }
}

if (!customElements.get('sl-nil')) {
  customElements.define('sl-nil', SlNil);
}
