python - 如何在 lisp 中定义这样的常量?

标签 python common-lisp

在 python 中可以这样做

EMPTY, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, BPAWN = range(8)

你会如何用 lisp 做等价的事情?

最佳答案

在 Lisp 中只使用符号会更加地道。通常作为 self 评估的关键字符号:

(defparameter *chess-pieces*
  '(:EMPTY :PAWN :KNIGHT :BISHOP :ROOK :QUEEN :KING :BPAWN))

定义数值是有原因的 - 有时。尤其是当您需要与外部函数对话时。在 Lisp 中,您会默认使用符号。

Common Lisp 没有真正的枚举类型。在动态类型语言中使用符号比使用数字变量有一些优势。例如,在调试期间,变量内容更具描述性:

比较:

> (setf c4 queen)

> c4
6

对比

> (setf c4 :queen)

> c4
:queen

在后一个示例中,符号值是 self 描述的。

关于python - 如何在 lisp 中定义这样的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870836/

相关文章:

python - 将输入代码拆分为 3 个字母并使用 if 语句返回 DNA->氨基酸字母

python - 读取 Django 模型的字段选项

lisp - 使用 cons() 的意外输出

scheme - 在 Common Lisp 中,Scheme 默认对象的等价物是什么?

Python Selenium 访问多级 HTML

python - 使用 CVXOPT 或 CVXPY 进行凸规划

python - 使用 selenium webdriver 单击链接

java - 以 Clojure 格式(java.util.Formatter)、cl 格式(Common Lisp 格式)以编程方式控制填充?

lisp - Lisp 中的函数 "defs"是什么?

common-lisp - 如何在普通 lisp 中将字符串转换为整数?