[過去ログ] 次世代言語11[Rust Swift TypeScript Dart] (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
948: 857 [sage] 2018/07/03(火) 09:12:56.01 ID:0xlHwX4q(1/2) AAS
>>937
937(1): デフォルトの名無しさん [sage] 2018/07/03(火) 00:16:39.10 ID:ulFfuTSn(1) AAS
何故breakにしたんだろねRuby。returnじゃ駄目だった理由が分からない
いや、next はともかく、 break は lexical scope の範囲内では実装出来ないんだよ。
break が for や while でキャッチされる特殊な例外扱いならば、こんなおかしな事にならず、Proc 内でも break 使える様に出来たのに。

>>938
938(1): 844 [sage] 2018/07/03(火) 01:06:30.72 ID:LtnxPY8P(1) AAS
Ruby では、break, return、例外も、単一の同じ仕組みを使っている。
コールスタックをさかのぼるポインタ。
つまり、どこから呼ばれて、どこへ戻るか

breakは、1つ外側のスコープへ戻る。
returnは、最も外側のスコープを抜ける

(レキシカル)スコープチェーンと、コールスタックの2大柱。
実装系・VM を作るには、この本がおすすめ

Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの内部の仕組み
ここでいっているスコープは、 dynamic scope であることに注意ね。
内部イテレータでは、本来 break は例外と同じ方法でしか実装出来ない事を理解いただいて何よりです。
でも、ruby では、 Proc で break 呼び出したときの例外が LocalJumpError になっていて、どういう扱いにしたいかよく分からないんだよね。
for, while 内の break との整合も取れないし

まあ、次世代言語の話じゃないんで、そろそろ突っ込みは止めときます。
980
(1): 857 [sage] 2018/07/03(火) 19:33:36.60 ID:0xlHwX4q(2/2) AAS
Nim は書きやすさと速度、Rust は安全性と速度、
に注力したイメージなんだが、安全性と速度に比べて、書きやすさと速度って一つの言語でカバーする必要性が薄いように思うんだよな。

従来の「スクリプト言語+速度が必要なところだけC/C++」に比べて、どうしてもNimが良いっていう場面ある?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.029s