1

私たちが見つけようとしている要素の代わりにtrueを返すlispのfindのような関数はありますか?

例:

やりたい

(find 'x '(a c x)) = t

いいえ

(find 'x '(a c x)) = x

また、私が尋ねている理由は、リストの最も深い要素に到達しようとしているためです。私の計画は、再帰的に呼び出すたびにリストをフラット化することでした。

その後、再帰呼び出しを停止します

(mapcar 'atom list)

そこにあるすべての原子が真実だと私に言うでしょう。

これがこの問題への良いアプローチだと思いますか?

4

1 に答える 1

1

そのような関数はありませんが、それを書くのは簡単ではありません。

(defun find-t (&rest args)
  (when (apply #'find args)
    t))

また、代わりに(mapcar 'atom list)を使用することもできます(every #`(eql t %) list)。つまり、のすべてのアイテムlistが正確にであるかどうかを確認しtます。(これは、私が使用する#`()1つの引数の構文糖衣ですlambda。)

しかし、全体として、これで何を達成しようとしているのかは不明です。あなたがやろうとしていることについて詳しく説明できますか?

于 2012-11-01T06:26:21.823 に答える