Hatena::Groupcadr

bulbのLisp日記 RSSフィード

2008-01-08

[][] 21:22 
 - bulbのLisp日記 を含むブックマーク

前の関数generateは、(rewrites phrase) を2回使用していて冗長なため、

次のように変更。

ちなみに let を使用しますよ。

(defun generate (phrase)
  "Generate a random sentence or phrase"
  (if (listp phrase)
      (mappend #'generate phrase)
      (let ((choices (rewrites phrase)))
	(if (null choices)
	    (list phrase)
	    (generate (random-elt choices))))))
#|
CL-USER> (generate 'sentence)
(A MAN LIKED THE TABLE)
CL-USER> (generate 'sentence)
(THE WOMAN TOOK THE BALL)
CL-USER> (generate 'sentence)
(A WOMAN SAW THE TABLE)
|#

setf を使用して代入なんかしちゃだめ。