Les sources de Syracuse apply.pps

%% syntaxe : [x1 ... xn] (f) apply --> [f(x1) ... f(xn)]
/apply {
3 dict begin
   dup isstring
      {/fonction exch cvx def}
      {/fonction exch def}
   ifelse
   /liste exch def
   /@i 0 def
   [
   liste length {
      liste @i get fonction
      /@i @i 1 add store
   } repeat
   counttomark
   0 eq
      {pop}
      {]}
   ifelse
end
} def

%% syntaxe : [x1 ... xn] (f) papply
/papply {
3 dict begin
   dup isstring
      {/fonction exch cvx def}
      {/fonction exch def}
   ifelse
   /liste exch def
   /@i 0 def
   [
   liste length 2 idiv {
      liste @i get
      liste @i 1 add get
      fonction
      /@i @i 2 add store
   } repeat
   counttomark
   0 eq
      {pop}
      {]}
   ifelse
end
} def

%% syntaxe : [x1 ... xn] (f) capply 
/capply {
3 dict begin
   dup isstring
      {/fonction exch cvx def}
      {/fonction exch def}
   ifelse   
   /liste exch def
   /@i 0 def
   [
   liste length 3 idiv {
      liste @i get 
      liste @i 1 add get 
      liste @i 2 add get 
      fonction
      /@i @i 3 add store
   } repeat
   counttomark 
   0 eq
      {pop}
      {]}
   ifelse
end
} def

%% syntaxe : [x1 ... xn] (f) dapply 
/dapply {
3 dict begin
   dup isstring
      {/fonction exch cvx def}
      {/fonction exch def}
   ifelse   
   /liste exch def
   /@i 0 def
   [
   liste length 4 idiv {
      liste @i get 
      liste @i 1 add get 
      liste @i 2 add get 
      liste @i 3 add get 
      fonction
      /@i @i 4 add store
   } repeat
   counttomark 
   0 eq
      {pop}
      {]}
   ifelse
end
} def

%% syntaxe : [x1 ... xn] (f) n1 n2 Apply 
%% f prend n2 parametres, et on decale de n1 a chaque
%% iteration. ainsi le 1er parametre de la 2eme iteration est x_(1+n1)
/Apply {
6 dict begin
   /n2 exch def
   /n1 exch def
   dup isstring
      {/fonction exch cvx def}
      {/fonction exch def}
   ifelse   
   /liste exch def
   /@i 0 def
   [
   liste length n1 add n2 sub n1 idiv {
      /@j 0 def
      n2 {
         liste @i @j add get 
         /@j @j 1 add store
      } repeat
      fonction
      /@i @i n1 add store
   } repeat
   counttomark 
   0 eq
      {pop}
      {]}
   ifelse
end
} def


Page composée par petitParseur[ps2html] le jeudi 20 novembre 2008.