if 和 cond 有什么区别?

What is the difference between if and cond?

可能是我理解错了

在Hy中,if*可以取(在if*符号之后)

如果谓词为假且未提供替代表达式,则返回 None。

if(没有星号)可以处理任意数量的谓词和结果对,如果没有谓词求值为真,则评估并返回最终的可选非谓词表达式。

这与 cond 有何不同,除了 cond 需要用括号括住谓词-结果对?

更新

截至 #2240(2022 年 3 月 2 日合并),ifcond 与以前有些不同,并且更好地区分彼此。 if 恰好需要三个参数:

(if condition-form
  then-form
  else-form)

cond 接受任意偶数个参数,不需要括号或提供隐式 dos:

(cond
  condition1 then1
  condition2 then2
  condition3 then3)

if* 已删除。

原回答

cond 中的方括号提供了隐含的 do。而已。我通常只对两个分支的情况使用 if,对其他所有情况使用 condif* 的存在实际上只是一个实现细节。