ÀµÌڤǤ¹¡£
¸¶ ¿®°ìϺÍÍ¡¢¸æ¶µ¼¨Í­Æñ¤¦¤´¤¶¤¤¤Þ¤¹¡£
"Ruby ¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç" ¤Ïʬ¤«¤ê¤ä¤¹¤¯¤Æ¡¢°¦ÆÉ¤·¤Æ¤¤¤Þ¤¹¡£
¤¿¤À DelayedList ¤Î½ê¤ÏÍý²ò¤¹¤ë¤Î¤Ë¶ìÏ«¤·¤Þ¤·¤¿¡£
(¤Û¤«¤Ë¤ÏÌäÂê¤Î instance_eval)

ML¤â½é¿´¼Ô¤Ç¤Ê¤«¤Ê¤«¿¿°Õ¤ÎÅÁ¤ï¤ë½ñ¤­Êý¤¬¤Ç¤­¤Þ¤»¤ó¤¬,¸í²ò¤µ¤ì¤Ê¤¤ÍͤË
¤Ç¤­¤ë¤À¤±Ãí°Õ¤·¤Æ½ñ¤¯¤³¤È¤Ë¤·¤Þ¤¹¡£ 

  In mail "[ruby-list:28342] Re: argument to instance_eval block"
    "Shin-ichiro HARA" <sinara / blade.nagaokaut.ac.jp> wrote

|class Sequence
|
|   include Enumerable
|
|   def initialize( list, &block )
|     @list = list
|     @proc = block
|   end
.....
|Prime = Sequence.new([2,3]){|seq, n|
|   m = seq[n - 1] + 2
|   m += 2 while seq.find{|k|
|     break if k * k > m
|     m % k == 0
|   }
|   m
|}

|Prime.each do |x|
|   p x
|   break if x > 100
|end

¤³¤ì¤Ï»ä¤Î script ¤Ç $mod=2 ¤È¤·¤¿¤â¤Î¤ÈËܼÁŪ¤Ë¤ÏƱ¤¸¤â¤Î¤À¤È
¥£¥Ä¡¢¥§¡¢ä¦¡¢¡¢¡«¡¢¥±¡¢¥ã¡£¡Ö
break ¹Ô¤Î 100 ¤ò m ¤ËÊѤ¨¤ë¤È°Õ¿ÞÄ̤ê¤Ë¤Ïư¤­¤Þ¤»¤ó¡£
¤³¤ì¤ÏÃ×̿Ū¤Ê·ç´Ù¤À¤È»×¤Ã¤ÆºÎÍѤ·¤Ê¤«¤Ã¤¿¤ï¤±¤Ç¤¹¡£
Prime ¤ÎÄêµÁ¤Î¤Ê¤«¤Ç¤Î m ¤ÏËÜÍè dummy(¾¤ÎÊÑ¿ô̾¤È¤Ö¤Ä¤«¤é¤Ê¤±ì¤
²¿¤ò»È¤Ã¤Æ¤â¤¤¤¤)ÊÑ¿ô¤ÎȦ¤Ê¤Î¤Ë¡¢¤³¤Î¾ì¹ç¤Ï¤³¤Î block ¤¬ mai
n ¤Î
context ¤Çɾ²Á¤µ¤ì¤ë¤¿¤á dummy ¤Ë¤Ê¤ê¤Þ¤»¤ó¡£
¤³¤¦¤¤¤¦¾ì¹ç¤Ï¾¤Ç¤ÏÀäÂФ˻Ȥï¤Ê¤¤¤è¤¦¤ÊÊÑ¿ô̾¤ò»È¤¤¤Ê¤µ¤¤¤È¤¤¤¦
²ò·èºö¤Ï¡¢Programming ¤Î´ðËܤËÈ¿¤¹¤ë(dummy ¤Ï dummy ¤Ç¤¢ë¤Ù¤­¤À¤
¤¤¤¦°ÕÌ£¤Ç)¤È»×¤¦¤Î¤Ç¼õ¤±Æþ¤ì¤é¤ì¤Þ¤»¤ó¡£

Âè2°ú¿ô¤ÎɬÍ×À­¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢¾å¤Î script ¤Ë ¼¡¤Î¤è¤¦¤Ê
¥£¥Ä
¥å¥å¥å¥å
ãìáóÓåñõåîãå
  ä媨ù©
    ø½óåìæ
    Óåñõåîãå®îå÷¨ÛÝ©ûüóåñ¬îü øÛîݪùÛîÝý
  êðêð¥å¥å¥å¥å
íåôèïä ¤òÄɲä·¤Æ

p (Prime*Power[2])[m]

¤È¤ä¤ì¤ÐÅöÁ³ error ¤Ë¤Ê¤ê¤Þ¤¹¡£
̵¸Â¿ôÎó¤äµé¿ô¤Ë»È¤¦¤Î¤¬¼ç¤ÊÌÜŪ¤Ê¤Î¤Ç¤³¤ì¤¬½ÐÍè¤Ê¤¤¤È»È¤¤Êª¤Ë¤Ê¤ê¤Þ
¤»¤ó¡£(Cauchy Îó¤Þ¤¿¤Ïµé¿ô¤È¤·¤Æ¼Â¿ô¤½¤Î¤â¤Î¤òɽ¤¹ Real class ò¹Í¤
¤Æ¤¤¤Þ¤¹¤¬¼Â¹Ô®ÅÙ¤ËÌäÂ꤬¤¢¤ê¼ÂÍÑŪ¤Ê¤â¤Î¤Ï̤¤À½ÐÍè¤Þ¤»¤ó¡£)
°Ê¾å¤Î¤è¤¦¤Ê¤³¤È¤Ï´ÖÀÜŪ¤Ë¤Ç¤¹¤¬¤Á¤ã¤ó¤È½ñ¤¤¤¿¤Ä¤â¤ê¤Ç¤¤¤¿¤ó¤Ç¤¹¤¬¡¢
½ñ¤­Êý¤¬°­¤«¤Ã¤¿¤ÈÈ¿¾Ê¤·¤Æ¤¤¤Þ¤¹¡£¤¹¤ß¤Þ¤»¤ó¤Ç¤·¤¿¡£

instance_eval ¤Ï½é¿´¼Ô¤¬»È¤¦¤È ´í¸±¤Ê¤è¤¦¤Ê¤Î¤Ç»È¤ï¤Ê¤¤¤³¤È¤Ë¤·¤Þ¤¹¡£

¤³¤ÎÏÃ¤Ï block ¤Ï block ¤ÇÅϤ¹¤Î¤¬¼«Á³¤À¤È»×¤Ã¤Æ¡¢¤½¤ÎÊýË¡¤ò¤­¤¤Æ¤ß¤
¤À¤±¤Ç¡¢ÆÃ¤Ëº¤¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç(¤¹¤Ã¤­¤ê¤Ï¤·¤Ê¤¤¤Ç¤¹¤¬)ä¤È¤·¤
¤Ï¤³¤ÎÊդǽª¤ê¤Ë¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

¤³¤ì¤ÏÊØÍø¤À¤È»×¤Ã¤Æ¤¯¤ì¤¿¿Í¤¬°ì¿Í¤â¤¤¤Ê¤«¤Ã¤¿¤Î¤¬¤Á¤ç¤Ã¤È»Äǰ¤À¤Ã¤¿
¤Î¤Ç¡¢ºÇ¸å¤Ë»ÈÍÑÎã¤ò¾¯¤·¤À¤±:
¦£´Ø¿ô¤ä¥¼¡¼¥¿´Ø¿ô¤ò·×»»¤¹¤ë¤È¤­¤Ë Bernoulli ¿ô¤¬É¬Íפˤʤê¤Þ¤¹¤¬¡¢(
¼¡¤Î¤è¤¦¤Ë´Êñ¤ËÄêµÁ¤Ç¤­¤Þ¤¹¡£

class Sequence
  def	*(y)
    x=self
    case y
    when Numeric
      Sequence.new([],x,y){"|n,x,y| x[n]*y"}
    else
      Sequence.new([],x,y){"|n,x,y| x[n]*y[n]"}
    end
  end
  def sum(n=0,m=nil,s=nil)
    each(n,m){|x| (break if not yield(x))  if iterator?;if s;s+=x;else s=x end
}
    s
  end
end

Binom =Sequence.new([Sequence.new([1]){"|i| 0"}]){"|n| Sequence.new([1],n){\"|
i,n| Binom[n-1][i-1]+Binom[n-1][i]\"}"}    #Æó¹à·¸¿ô

require "rational.rb"

Bernoulli =Sequence.new([1,Rational(-1,2)]){"|n| -(Binom[n+1]*Bernoulli).sum(0
,n-1)/(n+1)"}


·×»»¤ÏɬÍפʻþ¤Ë°ì²ó¤¹¤ë¤À¤±¤Ê¤Î¤Ç¡¢Â®¤¯¤¹¤ë¤¿¤á¤Î¹©Éפ¬ÉÔɬÍפÊ
¤³¤È¤âÍøÅÀ¤Ç¤¹¡£

Á²²½¼°¤Ç¤Ê¤¤Îã
def (Dirichlet={}).[](s)
  super || Dirichlet[s]=Sequence.new([1],s){"|n,s| (n+1)**(-s)"}
end
class Sequence
  def DirichletSeries(s)
    self*Dirichlet[s]
  end
end

Moebius=Sequence.new([0,1]){"|n| (p=Prime.prime_factors(n);pu=p.uniq;(p!=pu)? 
0:Sgn2[pu.size])"}
Moebius.DirichletSeriws(s).sum{|x| x.abs > $error} #=1/zeta(s)


ºÇ¸å¤ÎÎã¤ò½Ð¤»¤ÐÁ²²½¼°¤À¤±¤¬ÌÜŪ¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ï¡¢½ñ¤«¤Ê¤¯¤Æ¤â
ʬ¤«¤Ã¤Æ¤â¤é¤¨¤ë¤À¤í¤¦¤È¤¤¤Ã¤¿½ñ¤­Êý¤òº£¤Þ¤Ç¤Ï¤·¤Æ¤¤¤Þ¤·¤¿¡£¤¹¤ß¤Þ
¤»¤ó¤Ç¤·¤¿¡£
̵¸ÂÎó¤Î´Ö¤Î±é»»¤ò¼«Í³¤ËÄêµÁ¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¤Î¤¬ÌÜŪ¤À¤È¤¤¤¦¤³¤È¤ò
¤Ï¤Ã¤­¤ê½ñ¤¯¤Ù¤­¤Ç¤·¤¿¡£

Ĺʸ¼ºÎ餷¤Þ¤·¤¿¡£