そのため、現在 CLISP で関数を作成しようとしています。私がやりたいことは、プログラムを停止させて特定の条件で何かを実行させることですが、条件が真でない間はループを続行します。そう
(do ((i 0 (1+ i)))
((equal rows i))
;;loop body
;;for each row, look at a column
(do ((j 0 (1+ j)))
((equal cols j))
;;loop body
(if
(equal (get-value board i j) 0) (do ((lst (poss(get-row board i)) (cdr lst)))
((null lst) nil)
(return-from solve-driver(set-value board i j (car lst)))))
つまり、基本的に 2 つのネストされたループがあります。if ステートメントが true の場合、この関数を再帰的に実行しようとしていますが、ステートメントが true でない場合は、ループを実行し続ける必要があります。代わりに、if ステートメントが評価され、nil が返されます。これを続けるために使用できる何らかの継続機能はありますか? ありがとう!