|
304 | 304 | ;; NOTE: This clause assumes MeTTa dispatches the literal-empty `()` disAll |
305 | 305 | ;; pattern in preference to the generic `$lsk` clause below — the same |
306 | 306 | ;; literal-driven dispatch we relied on for $disable-discprobe True/False. |
307 | | -(= (getCandidateHelper (mkInst $inst) (mkKnob (mkTree $node $children) (mkLSK (mkDiscKnob $m $c $d ())) $i)) |
308 | | - (if (== (index-atom $inst $i) 0) |
309 | | - () |
310 | | - (let $newChildren (filter-atom (map-atom $children $ch (getCandidateHelper (mkInst $inst) $ch)) (!= ())) |
311 | | - (case (index-atom $inst $i) |
312 | | - ( |
313 | | - (1 (mkTree $node $newChildren)) |
314 | | - (2 (mkTree (mkNode NOT) ((mkTree $node $newChildren))))))))) |
315 | | - |
316 | | -;; Generic slow clause: any non-empty disallowed list requires translating the |
317 | | -;; raw effective setting back to its actual logical setting via the embedded |
318 | | -;; LSK before dispatching. |
319 | | -(= (getCandidateHelper (mkInst $inst) (mkKnob (mkTree $node $children) (mkLSK (mkDiscKnob $m $c $d (cons $dh $ds))) $i)) |
320 | | - (let $actualSetting (mapEffectiveDiscSpec (mkLSK (mkDiscKnob $m $c $d (cons $dh $ds))) (index-atom $inst $i)) |
321 | | - (if (== $actualSetting 0) |
322 | | - () |
323 | | - (let $newChildren (filter-atom (map-atom $children $ch (getCandidateHelper (mkInst $inst) $ch)) (!= ())) |
324 | | - (case $actualSetting |
325 | | - ( |
326 | | - (1 (mkTree $node $newChildren)) |
327 | | - (2 (mkTree (mkNode NOT) ((mkTree $node $newChildren)))))))))) |
| 307 | +(= (getCandidateHelper (mkInst $inst) (mkKnob (mkTree $node $children) (mkLSK (mkDiscKnob $m $c $d $disAllowed)) $i)) |
| 308 | + (let* |
| 309 | + ( |
| 310 | + ($setting (if (!= $disAllowed ()) |
| 311 | + (mapEffectiveDiscSpec (mkLSK (mkDiscKnob $m $c $d $disAllowed)) (index-atom $inst $i)) |
| 312 | + (index-atom $inst $i))) |
| 313 | + ) |
| 314 | + (if (== $setting 0) |
| 315 | + () |
| 316 | + (let $newChildren (filter-atom (map-atom $children $ch (getCandidateHelper (mkInst $inst) $ch)) (!= ())) |
| 317 | + (case $setting |
| 318 | + ( |
| 319 | + (1 (mkTree $node $newChildren)) |
| 320 | + (2 (mkTree (mkNode NOT) ((mkTree $node $newChildren)))))))))) |
328 | 321 |
|
329 | 322 | (= (getCandidateHelper $inst (mkTree $node $children)) |
330 | 323 | (let $newChildren (map-atom $children $ch (getCandidateHelper $inst $ch)) |
|
0 commit comments