On Sun, 17 Aug 2008, <[EMAIL PROTECTED]> writes:
> (loop as i from 1 to 5 do (print ddd) )
> komutuyla ddd değişkeninin değerini ekrana yazdırabiliyorum.
> ancak benim istediğim
> (loop as i from 1 to 5 do ddd) ile 5 kere aynı değeri geri dönmesiydi ancak
> beceremedim
> bunu nasıl yaparım.
5 kere aynı değerin dönmesi ile kastınız anlayamadım? Common Lisp'te her
ifadenin döndürdüğü _bir_ değer mevcuttur. (Olayın hukuksal HyperSpec
ayrıntısını liste sakinleri yanlışlarımı düzelterek bildireceklerdir.)
İstediğiniz acaba şöyle bir şey mi?
TEST> (apply #'values (loop repeat 5 collect 100))
100
100
100
100
100
Ya da şöyle bir şey mi?
TEST> (defmacro repeat-return (fn value count)
(let ((%value (gensym))
(%count (gensym)))
`(let ((,%value ,value)
(,%count ,count))
(defun ,fn ()
(when (plusp (decf ,%count))
,%value)))))
REPEAT-RETURN
TEST> (repeat-return 5-times-100 100 5)
5-TIMES-100
TEST> (5-times-100)
100
TEST> (5-times-100)
100
TEST> (5-times-100)
100
TEST> (5-times-100)
100
TEST> (5-times-100)
NIL
Bu arada böyle bir istediğinizin neden doğduğunu anlayamadım, fakat bu
kötü tasarıma bir işaret gibi geliyor bana.
İyi çalışmalar.
_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp