在使用一些-fn与3个谓词时,其后续评估顺序不同,并且一些-fn以不同的方式短路
使用2个谓词
((some-fn #{42} #{1}) 1 42)
=> 42
使用3个谓词
((some-fn #{42} #{1} :third-pred) 1 42)
=> 1
使用4个或更多谓词
((some-fn #{42} #{1} :third-pred :fourth+more-pred) 1 42)
=> 42
some-fn的文档字符串表示:".... 注意,f [some-fn返回的函数] 是短路的,因为它会在对原始谓词产生逻辑真值的第一个参数时停止执行。"。
我理解这仅适用于当前的3元参数行为。
可能解决方案
我认为需要修正文档字符串,将"第一个参数"替换为"一个参数"。可能需要对短路进行一致性修复的补丁,因为这可能导致返回不同的逻辑真值。
此外,此文档字符串行与"every-pred"中的行相同,"every-pred"在3参数与其2参数以及4个以上参数时具有相同的不同评估顺序和短路行为。由于"every-pred"仅返回布尔值真或假,而"some-fn"返回逻辑真值,因此这种影响较小。