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
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap