私はCommon LispのMEMBER関数のように機能する関数を作ろうとしています。 だから、私はこのように、この機能の作品を作りたい:Common LispのDOマクロを使ってMEMBER関数を書くにはどうすればいいですか?
(my-member 2 '(1 4 5 5 3 2 5 6 9))
=> (2 5 6 9)
これは、メンバ関数がどのように機能するかとまったく同じです;
(member 2 '(1 4 5 5 3 2 5 6 9))
=> (2 5 6 9)
この機能を使用するには、「DO」マクロを使用する必要があります。 これは私がこの関数を作るために書かれている私のコードです:私はこの問題を解決するために何をすべき
(my-member 2 '(3 4 5 2 1 1))
-> (3 4 5 2 1 1)
..
(defun my-member (item x)
"This function works like MEMBER function."
(do ((z x (rest z))
(e (first x) (first z)))
(:when (equal item (first z))
(return z))))
しかし、それは動作しませんか?ここで
MEMBERはLispのマクロではありません。 –
':when'とは何ですか? –
おっと、申し訳ありません。 MEMBERはLispの組み込み関数です! – starrykss