我有以下两个功能:
find(list, closure) := block(
filter: sublist(list, closure),
if length(filter) > 0 then filter[1] else null)$
find_index(list, closure) := block(
filter: sublist_indices(list, closure),
if length(filter) > 0 then filter[1] else null)$
在其他语言中,如果找不到搜索的元素,我会在这里返回null
或nil
。但我认为这个关键字在maxima中并不存在。在这种情况下,最大值的常见约定是什么?也许false
?
答案 0 :(得分:2)
false
确实是最常用的代表值"而不是"。它不是必需的,但它有一个非常一致的约定。
请注意,如果if foo then bar
评估为false
,foo
评估为false
。因此,if foo then bar else false
相当于if foo then bar
,这有点短。
答案 1 :(得分:1)
从手册:
- 常数:false
'false' represents the Boolean constant of the same name. Maxima implements 'false' by the value 'NIL' in Lisp.
因此,空结果的等效值为false
。