interactive な関数を定義する際に、その引数を、複数ある候補から指定したいと思っています。

; 次のような候補リストがあるとする
(setq candidates '("foo" "bar" "piyo"))

; the-candidate を candidates の中からひとつ選びたい
(defun some-func (the-candidate)
  (interactive (list ???))
)

これは一般的にどのように実現されますか?