[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:278

From: MAEDA Atusi <maeda-yarv atusi.org>
Date: Tue, 2 Nov 2004 12:40:40 +0900
Subject: [yarv-dev:278] Re: multiple assgin return value

SASADA Koichi <ko1 atdot.net> writes:

>  ある式について、その値が要求されているかの解析は、現状でも
> やっていたのを忘れていました。なので、前言っていた「面倒くさい」
> という理由は却下。
> 
> 	p( (a, b = 1, 2) )
> 	#=>
> 	p( [a = 1, b = 2] )
> 
> というように(文法的に)機械的な変換が可能であれば、現状のものも
> 実装できるかと思います。

a, b = b, a
は、そう一筋縄じゃいかないかも。

あと、右辺の評価順序(左から右か、不定か等)も決めとく必要があるでしょう
ね。

Common Lispだとこれは psetq (あるいはpsetf)というマクロになっていて、
必要なら勝手に中間変数が宣言されます。右辺の評価順序は左から右です。

(psetf prev list
       list (cdr list)
       (cdr list) prev)
を素直にマクロ展開すると、
(let ((tmp1 list))
  (let ((tmp2 (cdr list)))
    (let ((tmp3 prev))
       (setf prev tmp1
             list tmp2
             (cdr list) tmp3))))
とか。あとは、コンパイラが無駄な中間変数を除去したり。

				前田敦司

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       268 2004-11-01 19:28 [ko1 atdot.net       ] multiple assgin return value            
       269 2004-11-01 19:56 ┗[matz ruby-lang.org  ]                                       
       270 2004-11-02 05:27  ┗[ko1 atdot.net       ]                                     
       271 2004-11-02 05:38   ┣[ko1 atdot.net       ]                                   
       273 2004-11-02 08:01   ┃┗[matz ruby-lang.org  ]                                 
       272 2004-11-02 08:00   ┣[matz ruby-lang.org  ]                                   
       274 2004-11-02 08:15   ┃┗[ko1 atdot.net       ]                                 
       275 2004-11-02 08:25   ┃ ┗[matz ruby-lang.org  ]                               
       276 2004-11-02 09:14   ┃  ┗[ko1 atdot.net       ]                             
       277 2004-11-02 09:36   ┃   ┗[matz ruby-lang.org  ]                           
       279 2004-11-02 14:05   ┃    ┣[maeda-yarv atusi.org] multivple values (Re: multiple assgin return value)
       280 2004-11-02 14:49   ┃    ┃┗[matz ruby-lang.org  ]                       
       281 2004-11-02 17:54   ┃    ┃ ┣[maeda-yarv atusi.org]                     
       282 2004-11-02 18:14   ┃    ┃ ┃┗[ko1 atdot.net       ]                   
       284 2004-11-02 19:37   ┃    ┃ ┃ ┗[maeda-yarv atusi.org]                 
       283 2004-11-02 18:16   ┃    ┃ ┗[ko1 atdot.net       ]                     
       285 2004-11-02 19:47   ┃    ┃  ┣[matz ruby-lang.org  ]                   
       288 2004-11-02 20:43   ┃    ┃  ┃┗[ko1 atdot.net       ]                 
       289 2004-11-02 23:31   ┃    ┃  ┃ ┣[shugo ruby-lang.org ]               
       293 2004-11-03 08:35   ┃    ┃  ┃ ┃┗[ko1 atdot.net       ]             
       290 2004-11-03 01:17   ┃    ┃  ┃ ┗[matz ruby-lang.org  ]               
       291 2004-11-03 03:54   ┃    ┃  ┃  ┣[maeda-yarv atusi.org]             
       294 2004-11-03 08:57   ┃    ┃  ┃  ┃┗[matz ruby-lang.org  ]           
       296 2004-11-03 11:58   ┃    ┃  ┃  ┃ ┗[maeda-yarv atusi.org]         
       298 2004-11-03 14:34   ┃    ┃  ┃  ┃  ┣[akr m17n.org        ]       
       299 2004-11-03 15:39   ┃    ┃  ┃  ┃  ┃┗[maeda-yarv atusi.org]     
       315 2004-11-04 11:46   ┃    ┃  ┃  ┃  ┃ ┗[akr m17n.org        ]   
       307 2004-11-04 01:49   ┃    ┃  ┃  ┃  ┗[matz ruby-lang.org  ]       
       308 2004-11-04 02:08   ┃    ┃  ┃  ┃   ┗[shugo ruby-lang.org ]     
       310 2004-11-04 02:48   ┃    ┃  ┃  ┃    ┗[matz ruby-lang.org  ]   
       292 2004-11-03 08:32   ┃    ┃  ┃  ┣[ko1 atdot.net       ]             
       300 2004-11-03 17:36   ┃    ┃  ┃  ┃┣[matz ruby-lang.org  ]           
       301 2004-11-03 22:19   ┃    ┃  ┃  ┃┃┗[ko1 atdot.net       ]         
       304 2004-11-03 23:29   ┃    ┃  ┃  ┃┗[shugo ruby-lang.org ]           
       311 2004-11-04 02:56   ┃    ┃  ┃  ┃ ┗[ko1 atdot.net       ]         
       312 2004-11-04 09:40   ┃    ┃  ┃  ┃  ┗[shugo ruby-lang.org ]       
       313 2004-11-04 09:45   ┃    ┃  ┃  ┃   ┗[ko1 atdot.net       ]     
       314 2004-11-04 10:58   ┃    ┃  ┃  ┃    ┗[shugo ruby-lang.org ]   
       316 2004-11-04 12:48   ┃    ┃  ┃  ┃     ┗[ko1 atdot.net       ] 
       295 2004-11-03 09:29   ┃    ┃  ┃  ┗[ko1 atdot.net       ]             
       286 2004-11-02 20:05   ┃    ┃  ┗[maeda-yarv atusi.org]                   
       287 2004-11-02 20:13   ┃    ┃   ┗[matz ruby-lang.org  ]                 
       302 2004-11-03 22:21   ┃    ┗[ko1 atdot.net       ]                         
       303 2004-11-03 22:54   ┃     ┗[matz ruby-lang.org  ]                       
       305 2004-11-03 23:31   ┃      ┗[ko1 atdot.net       ]                     
       306 2004-11-04 00:49   ┃       ┗[matz ruby-lang.org  ]                   
->     278 2004-11-02 12:40   ┗[maeda-yarv atusi.org]