私は2つの値のMAXか2つの値のMINを返すLisp関数を持っています。今、私のコードにはVALUE1とVALUE2を評価するための比較的複雑な表現がいくつかあります。Lisp関数を減らすのを助ける
(defun treemax (bilist &optional ismin)
(cond
;; Compute minimum
(ismin (min (COMPLEX_EXPRESSION_1) (COMPLEX_EXPRESSION_2)))
;; Compute maximum
(t (max (COMPLEX_EXPRESSION_1) (COMPLEX_EXPRESSION_2)))))
ここでの問題はCOMPLEX_EXPRESSION_1とCOMPLEX_EXPRESSION_2は、実際のコードの多くの多くの行を取るということです。私は本当にそれらを繰り返さないようにしたいと思います。これを呼び出すより効率的な方法がありますか?
私がしようとしているのは、値ではなく単項のif on関数です。あなたがCまたはその変種に精通している場合は、基本的に私が探しているコンセプトは次のとおりです。
((ismin ? min : max) COMPLEX_EXPRESSION_1 COMPLEX_EXPRESSION_2)
私は条件付きに引数を送信するために機能するかを選択します。これは理にかなっていますか?
私はコードで正確な答えを推測しようとはしませんので、私は、Lispの構文を覚えていませんが、あなたへの答えは、「そこには、より効率的な方法のですこれを呼びますか? "質問は「絶対にはい」です。結果としてminまたはmax関数を返す関数を作成する必要があります。 – DVK