【发布时间】:2018-06-01 07:27:26
【问题描述】:
我想将or 应用于列表的每个元素,例如:
(apply or '(#t #t #f)) 预期结果 #t,但我收到错误:
'#' to 'apply' 类型错误(kawa.lang.Macro)(预期:过程、序列或其他运算符)
据我了解,or 不是程序。
有什么程序可以代替or吗?
【问题讨论】:
-
你可以定义你自己的使用
or的过程。 -
如何从
'(#t #t #f)的“应用或应用于每个元素”到#t的结果? -
(or #t #t #f)与true or true or false相同,是真的 -
正如@ScottHunter 所说,我确实编写了自己的程序并且它有效,
(define (orp . ls) (if (< (length ls) 2) (car ls) (or (car ls) (orp (cdr ls)))))
标签: functional-programming macros scheme apply variadic-functions