[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:27 / Filesize : 208 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rubyについて Part 30



1 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 11:47:53 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 29
pc11.2ch.net/test/read.cgi/tech/1193668038/

過去スレ・関連スレは >>2-


409 名前:デフォルトの名無しさん [2008/02/07(木) 23:42:40 ]
マクロはRubyの他の機能で代用可能ではないの?
あった方が便利?

410 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:46:19 ]
>>409
何したいのか判らんけど代用可能かどうかの判断つかないんなら聞いても意味無くない?

411 名前:デフォルトの名無しさん [2008/02/07(木) 23:47:38 ]
代用可能ではないと判断した。けど、詳しい人なら代用方法を知っているかもしれない。だから聞いている。

412 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:22:18 ]
>>402
CGI::Session の移植ならあね。
moonrock.jp/~don/ruby/#ID-WEBRICK

413 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:23:15 ]
代用というからには用途による。
あらゆる用途で同じように使えるなら、それはその機能そのものだ。

414 名前:デフォルトの名無しさん [2008/02/08(金) 00:25:30 ]
こういう用途には代用になる、と言えばいい。
すべてを網羅しなくても思いつくだけ述べてくれて構わない。

415 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:30:04 ]
Schemeのマクロは文法拡張ができる。
Rubyでは文法拡張する方法はない。

でいいの?

416 名前:デフォルトの名無しさん [2008/02/08(金) 00:38:31 ]
>>415
それは、例えば新しいif文を定義して、標準のif文と同じように使うことができるようになる、ということ?
それが、Schemeでは出来て、Rubyでは出来ないと。正しい?

417 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:40:22 ]
eval系列の命令でマクロっぽいことはできる。

attr_reader, attr_accessorもそれ



418 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:43:27 ]
>>416
可能だが、どこまで自然になればOKなのかは使う人によるからな・・・

Rubyでも DSLは作られるが、
例えば、brainfu*k を再現するのは無理だろう

419 名前:デフォルトの名無しさん [2008/02/08(金) 00:50:38 ]
lispってlispのソース上でbrainfu*kを再現できるの?()は出てこないの?
インタプリタを作るならlispでもRubyでもできるよね。それとは違うの?

420 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:52:42 ]
>>416
普通の関数なら関数を呼び出す時点で引数の評価は完了しているが、
マクロなら引数を評価するタイミングをマクロ側で制御できる。

ruby でオレオレif を作るなら、if/else の本体を Proc で包んで渡すしかない。
じゃないと オレオレif 関数を読んだ時点で if/else の本体が実行さてしまうから。
それか Proc のシンタックスシュガーであるブロックをうまく使ってごまかすか。


このサスペンダーの人の記事も参考に。
blog.livedoor.jp/dankogai/archives/50996734.html

421 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:52:43 ]
>>418
my_if(proc { cond }, proc { then_clause }, proc { else_clause })
は「文法拡張した」とはさすがに言えないだろう

422 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:48:53 ]
>>421
いや、だから人によるってば

>>419
インタプリンタつくって、文字列を実行してという話ではなくね。

お得意のマクロとやらでできるんじゃないのかな? > Lisp
DSLをよく作るとか聞いた
いや、おれはLisp詳しくないのだが・・・

ちなみに、Io-language だとかなりそのものに近ずけることができる。マクロなしに

423 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:08:56 ]
>>422
人による、って程度じゃないだろ。
>>421が受け入れられるなら、cond、then_clause、else_clauseを文字列にして
パーサ動かしてもいいってことか。

424 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:41:48 ]
>>422
>標準のif文と同じように使うことができる
が達成されてないじゃん。
これは主観ではなく客観で定義できる達成基準だぞ。

425 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:43:53 ]
揉めるなよ。
Matz的にはLispのマクロは「あまりに強力すぎる」ことに難があって、
Rubyをあえてそこまで行かせずにいるんだから。

426 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:46:10 ]
Rubyでも構文木いじればけっこう何でもできるんじゃないかな
PycoのRuby版もできるかもしれない。ParseTreeはどうよ

427 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:56:50 ]
ところでバイトコードからデコンパイルってできんのかな。



428 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:23:10 ]
Rubyの構文木ってすげー内部的でなかった?
生のポインタに触らずにいじれそう?

429 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:58:18 ]
Ruby もそろそろ smalltalk みたいになんでもオブジェクトして欲しい。

430 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:38:16 ]
>>424はともかく

>>423
静的言語ばかり使ってきた俺には、lambdaなどでif文作っても、
文法が拡張されているように見えるんだ。
たぶん経験の違いだと思う。

431 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:11:20 ]
Ruby個人的には大好き・・・

432 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:41:11 ]
Rubyまで「個人的に」とか断り付けなきゃいけないご時世か
普及したもんだなあ

433 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:44:40 ]
言ってることはよくわからんがとにかく凄い自信だ

434 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:14:52 ]
Object.instance_methods が、1.8 だと String の配列で、1.9 からは Symbol の配列になるそうですが、
今まで MyClass.instance_methods.include?('methodname') としていたのを
MyClass.instance_methods.include?(:methodname) としなければなりません。
1.8 と 1.9 の両方で使えるような書き方はありませんか。
arr = MyClass.instance_methods
arr.include?('methodname') || arr.include?(:methodname)
とか格好悪すぎる

435 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:21:03 ]
.map{|m|m.to_s}

436 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:23:05 ]
|m| って何の略?いや、気になったので

437 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:32:09 ]
method names か何かだろ
m 自体は method の m だと思う

「文字列かシンボルのどっち来るかわからん場合は to_s しとけ」という >>435 のアプローチは妥当



438 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:50:47 ]
>>434
> 今まで MyClass.instance_methods.include?('methodname') としていたのを
その書き方はそもそも効率が悪い。

MyClass.method_defined?(:methodname)


439 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:42:14 ]
>>425
「Scheme(or Lisp)に有って、Rubyに無い機能」であることは事実。
それがいいとか悪いとか言うつもりはない。

>>426
標準で構文木いじる方法がないってこと。
ParseTree は既存の文法でパースしたプログラムをいじることは
できても、既存の文法自体は拡張できない。

440 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:35:56 ]
javascriptのfunctionって最高じゃない?シンプルで。

rubyのproc、Proc.new、lambdaって何なの?同じようなのいくつも作って。馬鹿なの?

441 名前: [2008/02/09(土) 00:37:38 ]
pythonとRuby、そんなに変らん

442 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:01:24 ]
ECMAScript系はいいもんだね
サーバサイド実装も出て来てるし、今後RubyやPythonと比較されるユースケースが増えるかもなぁ。

現状では、利用形態がきっちり棲み分けてるから現実的に比べにくいかな。

443 名前:デフォルトの名無しさん [2008/02/09(土) 01:18:09 ]
functionは長いからfunかfnか\がいい。

444 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:25:21 ]
defで無名関数が定義できればいいのに。

445 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:27:43 ]
lengthかlength()かで迷うのはもうごめんだお

446 名前:デフォルトの名無しさん [2008/02/09(土) 01:30:37 ]
proc、Proc.new、lambdaを廃止して、全部defにしたら何か問題ある?

447 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:32:19 ]
メソッドとクロージャは違う



448 名前:デフォルトの名無しさん [2008/02/09(土) 01:33:40 ]
>>447
何が違う?具体的に。

449 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:35:02 ]
def: メソッド
proc、Proc.new、lambda:クローじゃ

でいいのかな?

450 名前:デフォルトの名無しさん [2008/02/09(土) 01:36:23 ]
>>449
だから、defでクロージャーも定義できるようにして何か問題があるかと聞いている。

現状がどうかなんて聞いていない。

451 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:37:43 ]
>>448
ブロックの外のローカル変数が見えるかどうか
あと無名関数なんて全然defineしてないのにdefって名前はさすがにどうかと

452 名前:デフォルトの名無しさん [2008/02/09(土) 01:40:06 ]
>>451
じゃあ、proc、Proc.new、lambda、defをobsoleteにして、全部funcにしたら何か問題ある?

453 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:42:17 ]
>>451
そんなこと言ったらlambdaなんて何の意味もない名前だろ。

454 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:45:08 ]
そういえば
proc,lambdaとProc.newじゃreturn等の挙動が変わるんだったな

455 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:46:30 ]
似て非なるものがゴチャゴチャあると紛らわしいから、functionにまとめてほしいな。

456 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:47:23 ]
Ruby1.9って反面教師であるはずのPerlに怪奇しつつあるよな
もっとシンプルで速度10倍くらい速くする方向に進歩して欲しい

457 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:54:05 ]
速度の話ではシンプルさよかeval捨てるか否かが優先されるかと。

そういや旧macromediaもeval捨てた矢先にActionScriptの速度上げたな



458 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:54:17 ]
関数が無い(ってことになってる)Rubyではfunctionってキーワードは採用されないだろうな

459 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:03:20 ]
>456
の「怪奇」があながち誤字に見えないから困る

460 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:07:38 ]
>>458
じゃあ、methodでいいよ。

461 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 03:05:24 ]
無名関数はスコープをどうするかが問題かな。
メソッド・Proc・ブロックを統一できればシンプルにはなるんだろうけど。

Rubyが将来シンプルになる見込みはないと思われるので、シンプルなサブセットを作って、
それに向けてYARVを最適化すればいいんじゃないかな。
組み込みクラスのメソッドの再定義を禁止するだけでも大幅に速くなると思うけど。

462 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 03:13:23 ]
do [名前] [|パラメータ|] 処理 end
が無名関数を返すようにして、
これでメソッド・Proc・ブロックを全部扱えるようにすればいい。

463 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 03:56:07 ]
お。

464 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 03:57:51 ]
ま。

465 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 04:29:01 ]
ECMAScript や Python は
public な(Rubyでいう)インスタンス変数が存在出来る。
そのお陰で、メソッドをあたかも
クロージャの入った public 変数のように扱える。

Ruby のインスタンス変数は全て protected 。
インスタンスの public はメソッドにしか許されていない。
メソッドとクロージャはハッキリ分かれてる。

そのへんの思想の違いじゃないかな?
Procとメソッドをシームレスに扱えるようにしても
Python や ECMAScript みたいにはスッキリしないと思う。
むしろ妙なパラドックスに陥りそう。

466 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 05:56:04 ]
> そのお陰で、メソッドをあたかも
> クロージャの入った public 変数のように扱える。
kwsk
gttkn

467 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:25:10 ]
例えば JavaScript ならこんな感じかな。

<script language="JavaScript">
function MyObject() {
this.method1 = function() { return "Hello"; }
}
var obj = new MyObject();
var func = obj.method1;
document.write(func());

function method2() { return "World"; }
obj.method2 = method2;
document.write(obj.method2());
</script>



468 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:40:45 ]
Python でも色々出来るが、メソッドと関数の
微妙な違いに苦しむかも知れんな。
型も違うから「あたかも」としか言えない。

class MyClass1:
    def method1(self):
        return 'Hello'

obj = MyClass1()
func = obj.method1
print func()

def method2():
    return 'World'
obj.method2 = method2
print obj.method2()

469 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:49:47 ]
>>438
thanks

470 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:26:34 ]
nukoup.nukos.net/img/13137.jpg

471 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:23:25 ]
factorial = def f(n)
         1 if n <= 0
         n*f(n-1) if n > 0
       end

factorial(10) #=> 3628800

こんな感じにしたい。

472 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:32:26 ]
5.times factorial

#=> 1
#=> 2
#=> 6
#=> 24
#=> 120

とか。

473 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:56:46 ]
proc、Proc.new、lambda、defを区別する意味ってあるの?
初心者の漏れには、特にproc、Proc.newが
よく分からない複雑怪奇なものにしか見えないんだけど;;

474 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:02:38 ]
Yコンビネータ使うとか。



475 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:40:01 ]
Yコンビネータは再帰のためのコンビネータであって、
lambdaの代わりにはならない。

procとlambdaは冗長ではある。Proc.newとは、似てるけど別物で、
まぎらわしいものがあれこれあるのはどうかという気はする。
(「Proc.new は、Proc#initialize が定義されていればオブジェクトの初期化の
ためにこれを呼び出します。このことを除けば、proc と同じです。」)

def は、確かに特別にそういうものがなくてもいいのかもしれない
けど、そうしちゃうと、クラスの文脈(*)に、

class Foo

  (*) ここ

  def foo()
    ……
  end
end

生にlambdaを書いて、それをModule#define_methodでインスタンスメソッド定義、
という、言語の内臓に触れるコードを書かせることになる。

class Bar
  define_method('bar', proc{
    ……
  })
end

こんな感じ。もしMatzがTOOWTDIを信奉してたらこうなってた、というか。

476 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:22:25 ]
>>471
定義されたfはどこに行っちゃうんだ?

477 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:26:01 ]
>>476
def〜endブロックのローカルスコープでいいだろ。



478 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:18:44 ]
>>475
> procとlambdaは冗長ではある。Proc.newとは、似てるけど別物で、
> まぎらわしいものがあれこれあるのはどうかという気はする。
> (「Proc.new は、Proc#initialize が定義されていればオブジェクトの初期化の
> ためにこれを呼び出します。このことを除けば、proc と同じです。」)

バージョンによって違うのかもしれないが、ブロックの中からreturnした時の
ふるまいが、Proc.newとprocは同じで、lambdaとは異なっている。

$ ruby --version
ruby 1.9.0 (2007-12-03 patchlevel 0) [i686-linux]

479 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:21:06 ]
紛らわしい機能はobsoleteにしてほしいな。
同じことができるならどれかに集約してもらいたい。

480 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:28:56 ]
そんなことをしたらmap vs collect論争ができなくなるじゃないか。


481 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:35:25 ]
map/collectは元々Ruby以前からそれぞれの宗派が存在したらから別にいいよ。
でも、lambdaはともかく、proc、Proc.new、def endはRuby独自でしょ。
Ruby独自ならRubyの中で整理した方がいい。

482 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:57:03 ]
>>475 >>478 で、
def が無ければメソッド定義が、えらい不格好なものになるし、
Proc.new, proc, lambda は似てるけど、それぞれ違うということが
示されてるのは無視?

483 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:18:50 ]
Proc.new, proc, lambda はそれぞれ違うけど、
同じようなことしかしないから、集約した方がいいって話じゃないの。

484 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:00:09 ]
> Procでreturnするとfooから抜けちゃって関数内関数として使えません(> <)
>
> def foo
> boo = Proc.new do
> 100.times do |i|
> 100.times do |j|
> if i == 50 && j == 50
> return
> end
> end
> end
> end
> boo.call
> p "foo" # 実行されず
> end
>
> foo

この例の場合、Proc.new なら駄目なわけだが、
lambda なら期待通り動く。

procがどちらのように動くかはバージョンによるらしい。

どちらかに絞れるのかな? これ。

485 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:03:37 ]
そういう多段の脱出のために catch 。

486 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:04:47 ]
lambda、proc、Proc.newの仕様ってそれぞれきっちり決められてる?
リファレンスマニュアルにはあまり詳細に書いていないようだけど。
ソース読めとか言わないよね?

487 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:07:29 ]
>>484
lambdaでも変わらない希ガス。
ruby 1.8.6 (2007-09-24 patchlevel 111)

def foo
  boo = lambda do
    100.times do |i|
      100.times do |j|
        if i == 50 && j == 50
          return
        end
      end
    end
  end
  boo.call
  p "foo" # 実行されず
end

foo




488 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:10:17 ]
言語使用もない糞言語,おまえらよく使う気になるよなあ(www

489 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:11:02 ]
>>487
インデント崩さずにどうやって書き込むの?

490 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:11:24 ]
>>489
全角スペース

491 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:14:12 ]
>>489
&nbsp;

492 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:17:16 ]
$ cat hoge.rb
def foo
 Proc.new{return"Proc.new"}.call
 return "foo"
end

def bar
 proc{return"proc"}.call
 return "bar"
end

def baz
 lambda{return"lambda"}.call
 return "baz"
end

p foo ; p bar ; p baz

$ ruby --version
ruby 1.9.0 (2007-12-03 patchlevel 0) [i686-linux]
$ ruby hoge.rb
"Proc.new"
"proc"
"baz"

$ ruby18 --version
ruby 1.8.6 (2007-12-02 patchlevel 5000) [i686-linux]
$ ruby18 hoge.rb
"Proc.new"
"bar"
"baz"

493 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:19:19 ]
インデントてすと

def foo
 bar

&nbsp;

494 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:23:40 ]
>>492
1.8.6では、Proc.new≠proc=lambda
1.9では、Proc.new=proc≠lambda
ってこと?

そもそも、returnに対する振る舞いの違いだけで、分けなければいけないようなものなのか?

495 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:33:28 ]
なぜこうなるのかわかりません(> <)

def foo
  Proc.new{1.times{return"Proc.new"}}.call
  return "foo"
end

def bar
  proc{1.times{return"proc"}}.call
  return "bar"
end

def baz
  lambda{1.times{return"lambda"}}.call
  return "baz"
end

p foo ; p bar ; p baz

#"Proc.new"
#"proc"
#"lambda"

496 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:40:12 ]
>>495
「どう」書いたら「どう」なることを期待してるわけ?

「なぜ」そうなるかはソースを見れば書いてある。

497 名前:495 mailto:sage [2008/02/09(土) 18:42:29 ]
1.timesをかましただけでlambdaの挙動が変わるのはなぜですか?lambdaなら
returnしてもbazから返らないと教わったのにその通りになってません。



498 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:43:36 ]
>>496
出たw
「「「「「「「「ソースを見れば書いてある」」」」」」」」

499 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:23 ]
Proc.new{} == メソッドに渡すブロック

500 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:45:14 ]
ソースったって、rubyという言語のインタプリタの単なる1実装のソースに過ぎないんだろ。
rubyがまともな言語なら言語仕様をきちんと示すべきなんだけどな。

501 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:45:26 ]
学生ってC#かjava使って宿題してんじゃないの?
なんでこんなにわいてんの?新人がゆとりなだけか?

502 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:47:27 ]
>>501
あーこのスレだけ見てるとわからんな

503 名前:デフォルトの名無しさん [2008/02/09(土) 18:48:37 ]
ソースを見る人次第でどんな風にも動作するあいまいな言語っていらないよね。


504 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:49:39 ]
もうブロック内でreturn使うの諦めようぜ
バージョン間での非互換や、書き方による差異でゴチャゴチャになってるんだから

505 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:49:42 ]
もとはPythonスレで出た流れを引き取った格好か

506 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:52:24 ]
>>503
ソースにはあいまい性はないよ。書いてある通りに動くのだから。
問題は、作者が開発しているインタプリタのソースが唯一の厳密な仕様書になっていること。

まともな言語なら、ソースではなく初めに仕様書ありきであるべき。

507 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:53:45 ]
>>505
??
この話題を始めたのは俺だが、Pythonスレなんて見たこと無いが。



508 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:54:52 ]
>>504
return関係は基本は一応「見たまま」なんだけどね
論理的に動作を追おうとすると変なことに

509 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:57:56 ]
言語仕様を決めて、それに従えば問題ないんだけどな。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<208KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef