-
Notifications
You must be signed in to change notification settings - Fork 330
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
パターンマッチのドキュメントを ruby/ruby の rdoc を翻訳する形で追加 #2773
Conversation
### 原文の場所 - pattern_matching.rd - cf. https://github.com/ruby/ruby/blob/v3_2_0/doc/syntax/pattern_matching.rdoc - control.rd - cf. ruby/ruby@281b350 ### pattern_matching.rd の配置に関して ## pattern_matching.rd の配置に関して rurema/doctree の `refm/doc/spec` 配下と ruby/ruby の `doc/syntax` 配下が似たようなファイル構成になっているため、 pattern_matching.rd も `refm/doc/spec` に配置した また今後可能なら doc 配下のファイルやクラス・モジュール・ライブラリのヘッドラインに rdoc へのリンクを追加したいと思っているが、その場合にディレクトリ・ファイル構成を ruby/ruby に寄せておくほうが実装しやすいのではという思惑もある
#@SampleCode から #@EnD までは COPY が実行できる最小範囲を基準にした
素の rdoc と bitclust の文法の違いを反映するため - サンプルコード・整形済みテキストの行頭の余分なインデントを削除 - 箇条書きのスタイルを適用するためインデントを追加
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している - unpack は Python に「アンパック」という用語があるのでとりあえずそのまま「アンパック」と訳している - cf. https://docs.python.org/ja/3/tutorial/datastructures.html#tuples-and-sequences
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している - パターンの名称にアルファベットが含まれる場合は頭文字大文字で統一している - respond to に関しては「実装もオブジェクト自体が持つ」のと「応答できる」だと意味が異なり、どのように翻訳するか迷ったが注記を追加し Object#respond_to? へのリンクを追加することで respond to の意味での『〜を持つ』だということを説明した - rest に関しては rest parameter の日本語名に合わせて「残余」と訳した - cf. https://secret-garden.hatenablog.com/entry/2022/03/11/210246 - ただ「残余」とだけ書かれていても分かりづらいため、カッコつきで rest も併記してみた
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している - パターンの名称にアルファベットが含まれる場合は頭文字大文字で統一している - rest に関しては rest parameter の日本語名に合わせて「残余」と訳した - cf. https://secret-garden.hatenablog.com/entry/2022/03/11/210246 - ただ「残余」とだけ書かれていても分かりづらいため、カッコつきで rest も併記してみた
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
…のマッチング) を翻訳 - 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している - パターンの名称にアルファベットが含まれる場合は頭文字大文字で統一している
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している - Ruby 3.2 ではおそらくこの節は不要だがまだ ruby/ruby 側でマージされていないため分岐は入れていない - cf. ruby/ruby#7052
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
- 翻訳する際、原文は対応箇所を把握しやすくするため bitclust のコメント機能を使って残している
素の rdoc と bitclust の文法の違いを反映するため
素の rdoc と bitclust の文法の違いを反映するため
素の rdoc と bitclust の文法の違いを反映するため
- 見出しレベル2だと見た目の主張が強すぎるため - 他のドキュメントでも見出しレベル2を飛ばして見出しレベル3を利用するケースが多そうだった - cf. https://github.com/rurema/doctree/blob/a770b9a74b1e8d1e0918e97fc390f9ae00cfec19/refm/doc/spec/control.rd - https://github.com/rurema/doctree/blob/a770b9a74b1e8d1e0918e97fc390f9ae00cfec19/refm/doc/spec/def.rd
@sanfrecce-osaka ありがとうございます! 幾つかの観点でsugesstionさせていただきたいのですが、まずは、議論したいところについて投稿します。 議論したいこと「翻訳の方針」に記載いただいた項目に関して
その他
|
次に、その他の変更提案を投稿します。それぞれについて、この後suggestionをそれぞれあらかじめ投げます。もし問題ないと感じるものであれば、それぞれacceptいただけますと幸いです。 その他変更提案るりまの他のページに表現をあわせる
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(うまくコレ消せません、ごめんなさい)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
るりまの他のページに表現をあわせる
- FooBarErrorがraiseされる -> 例外FooBarErrorが発生する
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
るりまの他のページに表現をあわせる
- カッコ -> 括弧
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
るりまの他のページに表現をあわせる
- key -> キー(ハッシュの文脈で)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
るりまの他のページに表現をあわせる
- マッチング -> マッチ
@sanfrecce-osaka さん
があるのですが、ここまでの「議論したいこと」「その他変更提案」とダブる箇所も一部ある=suggestionがコンフリクトしちゃう?ため、まだ投下しません。 |
…rorが発生する) Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (review)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (review)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (review)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コードコメント部分の翻訳について、変更提案を投稿します。もし問題ないと感じるものであれば、それぞれacceptいただけますと幸いです。
コードコメント部分
翻訳の方針
- 短さのために、常体(not 丁寧語)に
- 能動態を中心に使う
- ~が出力されます -> ~と出力
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
もし問題ないと感じるものであれば、それぞれacceptいただけますと幸いです。
原文の解釈に関する変更
「ここはこういう意味じゃないかしら」と思ったところに関する、変更提案です。
念のため:私の解釈が誤っている可能性もあります。
refm/doc/spec/pattern_matching.rd
Outdated
===[a:variable_pinning] 変数のピン留め | ||
|
||
#@# Due to the variable binding feature, existing local variable can not be straightforwardly used as a sub-pattern: | ||
変数の束縛の機能では存在しているローカル変数をサブパターンとしてそのまま利用することはできません。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
「変数の束縛の機能」の話ではなく、「変数の束縛の機能の存在のせいで、制限が生まれる」という話だと思われます。
そもそも原文(Due to the variable binding feature, ...)に対して、あんまり親切とは言えない・無くなっても困らないレベルの中途半端な言及の仕方だなぁと感じているので、変更案では、ちょっと手厚めにしています。
変数の束縛の機能では存在しているローカル変数をサブパターンとしてそのまま利用することはできません。 | |
既に存在しているローカル変数は、サブパターンとして変数の値をそのまま使うことができません。(これは、変数への束縛の機能を実現するための制限です。) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
refm/doc/spec/pattern_matching.rd
Outdated
#@end | ||
|
||
#@# +keys+ are passed to +deconstruct_keys+ to provide a room for optimization in the matched class: if calculating a full hash representation is expensive, one may calculate only the necessary subhash. When the <code>**rest</code> pattern is used, +nil+ is passed as a +keys+ value: | ||
keys はマッチしたクラスの中で最適化の余地を残して deconstruct_keys へと渡されます。もし全てのハッシュの表現の計算に高い負荷がかかる場合、必要なサブハッシュのみ計算されるかもしれません。『**rest』 パターンが使われている場合、keys の値として nil が渡されます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keys はマッチしたクラスの中で最適化の余地を残して deconstruct_keys へと渡されます。もし全てのハッシュの表現の計算に高い負荷がかかる場合、必要なサブハッシュのみ計算されるかもしれません。『**rest』 パターンが使われている場合、keys の値として nil が渡されます。 | |
deconstruct_keys メソッドに引数 keys を渡すのは、マッチを行うクラスの実装側に最適化の余地を残すためです。もし、ハッシュのすべての要素を計算するのが重い処理になる場合には、keys で指定された、マッチに必要になる部分のみを計算するように実装しても良いでしょう。 | |
『**rest』 パターンが使われた場合には、keys の値として nil が渡されます。 |
(しれっと改行を入れています。原文にも改行があったほうがいいと思う)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
訳は approve なんですが bitclust の仕様上段落内の改行は取り除かれてしまうため、改行したい場合は空行を挟む必要がありますね 😺
deconstruct_keys メソッドに引数 keys を渡すのは、マッチを行うクラスの実装側に最適化の余地を残すためです。もし、ハッシュのすべての要素を計算するのが重い処理になる場合には、keys で指定された、マッチに必要になる部分のみを計算するように実装しても良いでしょう。
『**rest』 パターンが使われた場合には、keys の値として nil が渡されます。
こちらは別途 c6bc5e0 で対応しました 🙏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
「議論したいこと」にごちゃごちゃ書いたことがわかりやすいように、変更提案の形で具体的なイメージを共有させてください。
(一応、もし『これでいいや』という場合は、そのままacceptいただいても問題ありません)
議論したいことに関する変更提案
1. respond to
respond to foobarのような部分は、「foobar メソッドを持つオブジェクト」「オブジェクトに foobar メソッドを定義する」と直接的に表現する&注釈を削除し、respond toの香りを無くす
の実装例です。
refm/doc/spec/pattern_matching.rd
Outdated
Array/Find/Hash パターンの中に 『<subpattern>』 と書かれている場所では任意のパターンをネストさせることができます。 | ||
|
||
#@# Array patterns and find patterns match arrays, or objects that respond to +deconstruct+ (see below about the latter). | ||
Array パターン と Find パターン は配列か deconstruct を持つオブジェクトにマッチします。(deconstruct については後ほど説明します) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Array パターン と Find パターン は配列か deconstruct を持つオブジェクトにマッチします。(deconstruct については後ほど説明します) | |
Array パターン と Find パターン は、配列か、deconstruct メソッド(後述)を持つオブジェクトにマッチします。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
refm/doc/spec/pattern_matching.rd
Outdated
Array パターン と Find パターン は配列か deconstruct を持つオブジェクトにマッチします。(deconstruct については後ほど説明します) | ||
|
||
#@# Hash patterns match hashes, or objects that respond to +deconstruct_keys+ (see below about the latter). Note that only symbol keys are supported for hash patterns. | ||
Hash パターン はハッシュか deconstruct_keys を持つオブジェクトにマッチします。(deconstruct_keys については後ほど説明します) Hash パターン で利用できるキーはシンボルのみです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hash パターン はハッシュか deconstruct_keys を持つオブジェクトにマッチします。(deconstruct_keys については後ほど説明します) Hash パターン で利用できるキーはシンボルのみです。 | |
Hashパターンは、ハッシュか、deconstruct_keys メソッド(後述)を持つオブジェクトにマッチします。Hash パターン で利用できるキーは、シンボルのみです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
refm/doc/spec/pattern_matching.rd
Outdated
#@# 原文にないが補足のため追加 | ||
※ deconstruct や deconstruct_keys を扱う際の『〜を持つ』の定義は [[m:Object#respond_to?]] と同様です。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#@# 原文にないが補足のため追加 | |
※ deconstruct や deconstruct_keys を扱う際の『〜を持つ』の定義は [[m:Object#respond_to?]] と同様です。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
b00f3fc で対応しました 😺
refm/doc/spec/pattern_matching.rd
Outdated
#@end | ||
|
||
#@# == Matching non-primitive objects: +deconstruct+ and +deconstruct_keys+ | ||
===[a:matching_non_primitive_objects] プリミティブなオブジェクト以外とのマッチ: deconstruct と deconstruct_keys |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
===[a:matching_non_primitive_objects] プリミティブなオブジェクト以外とのマッチ: deconstruct と deconstruct_keys | |
===[a:matching_non_primitive_objects] 非プリミティブなオブジェクトのマッチ: deconstruct メソッドと deconstruct_keys メソッド |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
refm/doc/spec/pattern_matching.rd
Outdated
===[a:matching_non_primitive_objects] プリミティブなオブジェクト以外とのマッチ: deconstruct と deconstruct_keys | ||
|
||
#@# As already mentioned above, array, find, and hash patterns besides literal arrays and hashes will try to match any object implementing +deconstruct+ (for array/find patterns) or +deconstruct_keys+ (for hash patterns). | ||
既に先述されている通り、配列リテラルやハッシュリテラルの他に Array, Find, Hash パターンは deconstruct (これは Array/Find パターンで利用されます) か deconstruct_keys (これは Hash パターンで利用されます) が実装されたオブジェクトにマッチします。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
既に先述されている通り、配列リテラルやハッシュリテラルの他に Array, Find, Hash パターンは deconstruct (これは Array/Find パターンで利用されます) か deconstruct_keys (これは Hash パターンで利用されます) が実装されたオブジェクトにマッチします。 | |
既に述べたように、Array/Find/Hash パターンは、配列やハッシュのリテラルの他に、deconstruct メソッド(Array/Find パターン)あるいは deconstruct_keys メソッド(Hash パターン)を定義しているオブジェクトに対しても、マッチを試みます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
refm/doc/spec/pattern_matching.rd
Outdated
#@end | ||
|
||
#@# Number of +deconstruct+, +deconstruct_keys+ method calls: | ||
#@samplecode deconstruct や deconstruct_keys が呼び出された回数 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#@samplecode deconstruct や deconstruct_keys が呼び出された回数 | |
#@samplecode deconstruct メソッドや deconstruct_keys メソッドが呼び出された回数 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
7a533e0 で対応しました 😺
「こいつ、いつまで変更提案出してくるんだ...」と感じられると思うので、進捗チェック表をここに共有させてください。 変更提案進捗
議論したいこと
|
refm/doc/spec/pattern_matching.rd
Outdated
config = {db: {user: 'admin', password: 'abc123'}} | ||
|
||
#@# config => {db: {user:}} # will raise if the config's structure is unexpected | ||
config => {db: {user:}} # config の構造が予期しないものだった場合は例外が発生します |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CIが落ちている原因がこの行にありそうです。
samplecode ではるりまが対応しているRubyのバージョンでSyntaxErrorになるような構文が書けなかったと思います。現在はRuby 2.7 ~ 3.3 が対応バージョンなので、2.7でSyntaxErrorになって落ちてそうです。
samplecode ではなく //emlist{ ... }
を使うか、3.0以上の分岐を入れるかが必要そうです。
$ docker run -it --rm rubylang/all-ruby ./all-ruby -e "config = {db: {user: 'admin', password: 'abc123'}}; config => {db: {user:}}"
(snip)
ruby-2.7.0-preview1 -e:1: syntax error, unexpected =>, expecting end-of-input
...password: 'abc123'}}; config => {db: {user:}}
... ^~
exit 1
ruby-2.7.0-preview2 -e:1: syntax error, unexpected =>, expecting end-of-input
...password: 'abc123'}}; config => {db: {user:}}
... ^~
exit 1
...
ruby-2.7.7 -e:1: syntax error, unexpected =>, expecting end-of-input
...password: 'abc123'}}; config => {db: {user:}}
... ^~
exit 1
ruby-3.0.0-preview1 -e:1: syntax error, unexpected '}'
...c123'}}; config => {db: {user:}}
... ^
exit 1
ruby-3.0.0-preview2 -e:1: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!
...
ruby-3.0.5 -e:1: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!
ruby-3.1.0-preview1
...
ruby-3.2.0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます〜 🙏
実は原因は自分の方でも把握していてローカルで対応しているところでした 😺 (反応遅くなってすみません 😹 )
ただ、分岐が入ると訳のレビューがやりづらいと思われるため先に最新の状態のみでレビューしてもらっています 🙏
大変遅くなりました 🙏
提案いただいた方針で修正しようと思います 🚀
と rest変数 という案をいただいたんですが、以下のようにパターンとしてはマッチさせるけど変数への束縛は行わないケースもあるので 変数 といっていいのかは迷いがあります 🐈 case { a: 1, b: 2 }
in { a:, ** } then p a # この節にマッチする
in { a:, b: } then p a, b
end
# => 1
提案いただいた方針で修正しようと思います 🚀
とあるんですがこれは 「(Rubyでは 値の束縛といいつつ再代入ができるので )代入と読み替えていいよ」 という解釈で合っていますか? 👀
今のところ他に思い浮かばず提案頂いた「値を取り出す」がいいかなぁと思いつつ、もう少し考えさせてください 🙏 |
96edd79
to
b00f3fc
Compare
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (review) - 短さのために、常体(not 丁寧語)に - 能動態を中心に使う - ~が出力されます -> ~と出力
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (review) ディスカッション中のものを除く
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment) > 『**nil』 を指定する方法以外はないので > > 元々の翻訳いただいた文章を活かす場合、 > > > また、パターンで明示的に指定されたキー以外にキーが存在しないケースにマッチングさせたい場合**のために**、『**nil』 を指定する方法もあります。」 > > のようにできると思いますが、ここは原文の文体を維持するよりも、「こういうときは、こうする」という書き方に寄せています。
Co-authored-by: shuichi <[email protected]> rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment) > 「変数の束縛の機能」の話ではなく、「変数の束縛の機能の存在のせいで、制限が生まれる」という話だと思われます。 > > そもそも原文(Due to the variable binding feature, ...)に対して、あんまり親切とは言えない・無くなっても困らないレベルの中途半端な言及の仕方だなぁと感じているので、変更案では、ちょっと手厚めにしています。
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment) cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (review)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment)
0bf0b3d
to
3702378
Compare
@sanfrecce-osaka ご回答いただきありがとうございます🙏 議論したいところに書かせていただいたところのうち、残っているところについて返信させていただきます: 2. rest2-1. 議論対象の整理ここ、改めて見直して気づいたのですが、議論の対象は「
でした...すみません💦 (原文の該当箇所――プルリクのファイルですと183行目辺り――を引用します)
2-2. 「rest変数」の訳語提案についてFindパターンの構文のところに揃えたのでした「rest変数」の訳語ですが、これは、「パターン」項の一番最初の、パターンの種類&構文の箇条書きをしているところで、以下のようにFindパターンの構文中に「 (原文の該当箇所――プルリクのファイルですと99, 100行目辺り――を引用します)
(ここの部分、仮に『rest変数』を使うとなった場合、「 「変数」と呼んで良いのか
こちらですが、束縛自体は行っていて、その値の利用をしていないだけ...だと思っています。 そして、束縛した値を利用したい場合は、「名前付きrest変数」のようなことをすれば良い、というのが、プルリクファイルの335行目辺りで説明されている、という流れだと思っています。 (該当行の原文を引用)
束縛した値を再利用できないなら、「変数」呼ばわりはどうなの(『名前付きrest変数』と呼んだものがそれじゃないの)、というのはあります...が、このあと4. 用語『束縛』についてでも言及するように、関数型言語のimmutableな変数(的なもの)を背景とした用語・表現を忠実に守るよりかは、「Ruby風の」言い換えとして、思い切って「変数」呼ばわりしちゃっていいんじゃないかなと思っています。 (全然ずれたことを言っていたらすみません💦) Findパターンの
|
Co-authored-by: shuichi <[email protected]> cf. rurema#2773 (comment) > 4. 用語『束縛』に対しては、「(Rubyでは)代入と読み替えていいよ」という注釈をつけるか、いっそ『代入』に書き換えるか、をした方が親切に思う > - 個人的には、パターンマッチの文脈で他の言語に触れた際の『束縛』に橋渡しできるので、注釈を一発入れて『束縛』という用語は残していいかも cf. rurema#2773 (comment) > ## 4. 用語『束縛』について > > > 「(Rubyでは)代入と読み替えていいよ」 > > > > > > とあるんですがこれは > > > 「(Rubyでは 値の束縛といいつつ再代入ができるので )代入と読み替えていいよ」 > > > > > > という解釈で合っていますか? 👀 > > そう...なのですが、私の大元の意図の記載について言及し忘れておりまして、このパターンマッチのドキュメントは、「特に他のプログラミング言語の知識がないRubyユーザが読んでも理解できるドキュメント」であるべきかなぁと考えておりました。 > > となったときに、「関数型言語のimmutableな変数(らしきもの)に代入(らしきことをする)動作」と詳しく対応させる&そのためにそれらの言語を知る必要性を、前提に置くことなしに、読めてほしいなと思います。 > > また、Rubyに置き換える際には、言語の仕組みが違うので、正確に1対1の用語の射影はできない=いわゆる妥協をする必要があると思っています。 > > ...ということを込めて、 > > > 「『束縛』は、パターンマッチの輸入元である関数型言語なんかの用語で、ここでも使っているんだけども、(Rubyでは)代入と読み替えていいよ」 > > というのは、 > > > 「『束縛』は、パターンマッチの輸入元である関数型言語なんかの用語で、ここでも使っているんだけども、**(ここで『束縛』って初耳です、なぁにそれ、という方々、細かいことは考えなくていい!)**『束縛』は(Rubyでは)代入と読み替えていいよ **(勿論、ホントは関数型言語における『束縛』との比較などの細かい話はあるけれども、だ)** 」 > > みたいな意味合いでした...😅 > > (私の場合、Lispや不慣れなHaskellの知識ぐらいしかないので、ここで言っていることが頓珍漢な可能性があります;Lispは『関数型言語』の文脈で出すべきかはアレですが)
だいぶ期間が空いての返信ですみません 🙏
考えてみると英文故にダブルクォーテーションで囲っているだけであまり大きな意味はなく訳す場合は単に「残りの」と訳せば良い気がしてきたのですがどうでしょう? 👀
d261348 で対応してみました〜 😸
Gem::Installer#unpack で「展開」という単語が使われているのでこれでどうでしょう? 😺 https://docs.ruby-lang.org/ja/3.1/method/Gem=3a=3aInstaller/i/unpack.html
|
cf. rurema#2773 (comment) 以下のコミットの内容を分岐に取り込んだ cf. [DOC Update pattern matching docs for 3.2](ruby/ruby@ce0f3de) cf. [Allow omission of parentheses in one line pattern matching](ruby/ruby@ecb6d6a) cf. [ Add pattern matching pin support for instance/class/global variables](ruby/ruby@fa87f72) cf. [Pattern matching pin operator against expression](ruby/ruby@2186347) cf. [ Update documentation for pattern matching](ruby/ruby@4902f96) cf. [Reintroduce expr in pat](ruby/ruby@88f3ce1) cf. [Pattern matching is no longer experimental](ruby/ruby@b601532)
マージしました! まあ何か問題があったらまた修正しましょう。 |
翻訳元の原文
pattern_matching.rd の配置に関して
rurema/doctree の
refm/doc/spec
配下と ruby/ruby のdoc/syntax
配下が似たようなファイル構成になっているため、 pattern_matching.rd もrefm/doc/spec
に配置しましたまた今後可能なら doc 配下のファイルやクラス・モジュール・ライブラリのヘッドラインに rdoc へのリンクを追加したいと思っていて、その場合にディレクトリ・ファイル構成を ruby/ruby に寄せておくほうが実装しやすいのではという思惑もあります
翻訳の方針
Object#respond_to?
へのリンクを追加することで respond to の意味での『〜を持つ』だということを説明してみましたcode
タグ => 二重かぎ括弧(『』)_
とem
タグ (イタリック体) => かぎ括弧(「」)+
(タイプライター体) => 削除やっていないこと
挙動確認方法
レビュー時に挙動確認する場合、以下の手順で実行してください
bitclust update
で利用されるBitClust::RRDParser#parse_level1_header
が Ruby の定数が前提になっているため doc 配下のファイルに対して利用できないbitclust setup
でデータベースを更新するしかないbitclust setup
はローカルの rurema/doctree のソースコードを指定できないのでローカルに rurema/bitclust を clone してきてlib/bitclust/subcommands/setup_command.rb
を以下のように修正してください@update = true + @doctreedir = nil @parser.banner = "Usage: #{File.basename($0, '.*')} setup [options]"
上記の修正は別途 rurema/bitclust にプルリクエストを投げる予定です 🙇
bitclust setup
を実行してくださいBITCLUST_PATH
でローカルに clone してきた bitclust のパスHOME
で.bitclust
を生成するパス--doctreedir
でデータベース生成の際に使用する doctree のパス--no-update
git pull --rebase
が実行されてしまうため(リモートブランチと差分がないなら指定の必要なし)実行例
$ BITCLUST_PATH=/Users/XXX/rurema/bitclust HOME=/Users/XXX/rurema/doctree bundle exec bitclust setup --doctreedir=/Users/XXX/rurema/doctree --no-update
bitclust staticfile
で挙動を確認bitclust htmlfile
はタイトルが Ruby の定数でない場合に(uninitialized)
になったり目次のリンクのテキストが id での表記になってしまうため doc 配下の修正である今回はおすすめしません 🙏BITCLUST_PATH
とHOME
はbitclust setup
で指定したものと同じものを指定してください実行例
$ BITCLUST_PATH=/Users/XXX/rurema/bitclust HOME=/Users/XXX/rurema/doctree bundle exec bitclust --target=3.1.0 statichtml -o ./output
申し送り事項
ruby-jp でメッセージを頂いた shuichi さんから Suggested Change の形でこのプルリクエストに翻訳修正の提案があるかと思います 🐱
cf. https://ruby-jp.slack.com/archives/CLQUG7B3M/p1672641969966319?thread_ts=1668382164.602709&cid=CLQUG7B3M