Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
21 lines (16 sloc) 704 Bytes
(sum ?amount
     (and (job ?x (computer programmer))
          (salary ?x ?amount)))

(accumulation-function <variable>
                       <query pattern>)          

Ben 实现这一扩充的想法是:

将查询模式送入qeval,这将产生一个框架流。而后他就可以把这个流送给一个映射函数,该函数从流中每个框架提取出制定变量的值,而后将得到的结果值的流送入一个累积函数。

Ben 这里的做法会出现和上一题一样的情况,某些值会多次计算

(sum ?amount
  (and (wheel ?who)
       (salary ?who ?amount)))

所以在由映射函数取出变量的值之前,需要先对流中的绑定去重。