You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Common Lisp代码格式咨询:heapify-down函数缩进是否合规?

Common Lisp heapify-down 代码格式化规范修正

你的代码在缩进、括号对齐和语法细节上存在一些不符合Common Lisp通用规范的问题,以下是修正后的规范版本,同时说明关键格式化要点:

规范格式化后的代码

(defun heapify-down (heap-id index)
  (if (is-leaf heap-id index)
      nil
      (let ((left (left-child index))
            (right (right-child index))
            (heap-array (heap-actual-heap heap-id)))
        (cond
          ((null (aref heap-array left))
           (when (= (find-largest heap-id index right) index)
             (swap heap-array index right))
           nil)
          ((null (aref heap-array right))
           (when (= (find-largest heap-id index left) index)
             (swap heap-array index left))
           nil)
          ((and (= (find-largest heap-id index left) left)
                (= (find-largest heap-id index right) right))
           nil)
          (t
           (let ((new-index (find-smallest heap-id left right)))
             (swap heap-array index new-index)
             (heapify-down heap-id new-index)))))))

关键修正与格式化要点

  • 参数对齐:函数参数直接跟在defun的括号后,无需换行;若参数过多需换行,应对齐到defun的左括号位置,保持视觉统一。
  • 特殊形式缩进:if、let、cond等特殊形式的子句统一缩进4个空格(或2个,项目内保持一致),子句的起始位置对齐,增强可读性。
  • 括号闭合:每个嵌套结构的右括号对齐到对应特殊形式的起始位置(比如let的右括号对齐到let的首字母),这是Common Lisp社区广泛遵循的风格。
  • 语法修正:原代码中(let (new-index ...))缺少一层括号,正确的let变量绑定格式应为(let ((var value) ...)),否则会引发语法错误。
  • 可读性优化:将if替换为when(当只有真分支时),减少冗余的nil;函数调用的参数尽量紧凑,避免不必要的换行,同时保持逻辑块的清晰分隔。

内容的提问来源于stack exchange,提问作者Matias Bonoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:15:07