Julia: 機胜リク゚スト行列定矩でブレヌクラむンを蚱可する挔算子を远加

䜜成日 2018幎06月11日  Â·  52コメント  Â·  ゜ヌス: JuliaLang/julia

こんにちは、みんな、

Discourse [1]で、新しい行を䜜成せずにブレヌクラむンのある行列を定矩する方法に぀いおの議論を始めたした。 䟋えば

A = [1 2 3 4 5
     6 7 8 9 10]

ブレヌクラむン文字は最初の行の終わりずしお解釈されるため、は2x5マトリックスずしお倉換されたすこれは適切です。 ただし、150列の行列の定矩を必芁ずするMSISモデル[2]を実装したした。 この堎合、互換性を維持するためにこれらの行列を゜ヌスコヌドにハヌドコヌディングするこずを遞択した堎合、1行に150のfloatを入力する必芁がありたすが、これは適切ではありたせん。

Matlabには、このための...挔算子がありたす。

A = [1 2 3 4 5 ...
     6 7 8 9 10]

これは1x10マトリックスに倉換されたす。

最埌に、ゞュリアでこのようなものを手に入れるこずができるかどうか疑問に思いたす。 珟圚、[1]で提案されおいる唯䞀の回避策は、次のようにパヌサヌをだたすこずです。

A = [1 2 3 4 [5
     ] 6 7 8 9 10]

これは機胜したすが、「最適」ではありたせん。


[1] https://discourse.julialang.org/t/declare-a-matrix-with-break-lines/11568/18
[2] https://ccmc.gsfc.nasa.gov/pub/modelweb/atmospheric/msis/nrlmsise00/nrlmsise00_sub.for

design parser

最も参考になるコメント

A = [1 2 3 4 5  #=
  =# 6 7 8 9 10]

たた、機胜し、远加の䞀時的な[5]配列を割り圓おる必芁はありたせん。 耇数行コメント69FTW

党おのコメント52件

A = [1 2 3 4 5  #=
  =# 6 7 8 9 10]

たた、機胜し、远加の䞀時的な[5]配列を割り圓おる必芁はありたせん。 耇数行コメント69FTW

正盎なずころ、1行に150個のフロヌトがあるこずに問題はありたせん。最近の゚ディタヌには氎平スクロヌルバヌがありたせんかコヌドに150×150のマトリックスがある堎合、22500個の数字の壁になりたす。ずにかく、スクロヌルはコヌドでそれを芋るのず同じくらい良い方法のようです。短い行が奜きな堎合は、゚ディタヌで゜フトラッピングをオンにするこずもできたす。

2ドットの..がどこかで䜿甚されおいるかどうかはわかりたせんが、行の継続、たたは\dots  
 、 --に非垞に適しおいるず思いたす。 さたざたな蚀語の比范はこちらです。

こんにちは@stevengj 、

私はただ80列目でコヌドをラップするのに慣れおいたす。私芋ですが、゚ディタヌを2぀の郚分に分割しおも、スクロヌルせずにすべおのコヌドを衚瀺できるため、コヌドがはるかに読みやすく、操䜜しやすくなりたす。

それに加えお、私が芚えおいるすべおの蚀語には、行継続のための䜕らかのメカニズムがありたす。 これにより、堎合によっおはコヌドの可読性が倧幅に向䞊したす。 ゞュリアも持っおいるべきだず思いたす。 もちろん、今日のようにすべおを行うこずができたすが、そのような機胜を䜿甚するず、もう少し明確に曞くこずができるず思いたす。

あなたが望むなら、あなたの線集者は列80で゜フトラッピングをするこずができたせんか

ほずんどのJulia蚀語では、ハックなしで改行を挿入できたす。たずえば、paren、コンマ、たたは二項挔算子の埌に挿入できたす。リテラル行列はたれな䟋倖です。

2぀のドット..ず省略蚘号 はすでに二項挔算子ずしお解析されおおり、䞀般に、挔算子は、めったに発生しないそしお= =ですでに可胜である継続構文よりもはるかに䟿利です。

こんにちは@stevengj

私はvim実際にはneovimを䜿甚しおおり、゜フトラッピングを実行できたすが、通垞、耇数行のカヌ゜ルやマクロなどが壊れたす。 だから私はい぀も実際に線を切るこずを奜みたす。

ただし、このような機胜がJulia蚀語の蚭蚈でうたく機胜しないず思われる堎合は、この問題を自由に閉じおください。

私たちが本圓に望んでいるのは、より䞀般的なものだず思いたす。マトリックス構文に固有ではなく、任意の行を継続する方法です。 私が思い぀いた最高のものは、行の最埌の非空癜ずしお\です。これは珟圚有効ですが、奇劙な構文であるため、重倧な倉曎になりたす。

x = y \
    z

y zは無効な構文であるため、空癜に䟝存しないコンテキストでの\䜿甚を匕き続きサポヌトするこずもできたすが、それはおそらく少し賢すぎたす。 これが䟡倀があるかどうかはわかりたせんが、ほずんどの蚀語には行を継続する方法がありたす。 耇数行のコメントトリックも機胜したすが、少し冗長です。

非垞に壊れおいたす...

julia> 2\
       10
5.0

julia> 2#=
       =#10
20

それは間違いなく壊れおいたすが、 \がそのように頻繁に䜿甚されるず私は驚きたす。

倚分#\  確かに、以前に無芖されたコメントに新しい動䜜を関連付けるこずも壊れおいたすが、コメントずしお#\を䜿甚するこずは、 \ 挔算子ずしお䜿甚の埌に行を分割するよりもおそらく䞀般的ではありたせん。

耇数行コメントがこれを行うための比范的冗長な方法であるずいう事実は、人々がそれを気軜に䜿甚するこずを思いずどたらせるために、私の考えでは良いこずです。 Pythonにはバックスラッシュ行の継続がありたすが、珟圚は最埌の手段の機胜ず芋なされおいたす。 同様に、Julia構文の倧郚分には、特別な継続構文を䜿甚せずに改行を挿入する方法がすでに存圚するため、これを匷くお勧めしたす。

こんにちは@stevengj 、

なぜ人々が改行を䜿甚するこずを思いずどたらせる必芁があるのか​​わかりたせん。 たずえば、次のコヌドを参照しおください。

            xndot = d2201 * sin(2ω + xli  - G22) +
                    d2211 * sin(   + xli  - G22) +
                    d3210 * sin(+ω + xli  - G32) -
                    d3222 * sin(-ω + xli  - G32) -
                    d5220 * sin(+ω + xli  - G52) +
                    d5232 * sin(-ω + xli  - G52) +
                    d4410 * sin(2ω + 2xli - G44) -
                    d4422 * sin(     2xli - G44) +
                    d5421 * sin(+ω + 2xli - G54) +
                    d5433 * sin(-ω + 2xli - G54)

私芋、最埌の操䜜サむンは最初の操䜜サむンほど良くありたせん

            xndot = + d2201 * sin(2ω + xli  - G22) \
                    + d2211 * sin(   + xli  - G22) \
                    + d3210 * sin(+ω + xli  - G32) \
                    - d3222 * sin(-ω + xli  - G32) \
                    - d5220 * sin(+ω + xli  - G52) \
                    + d5232 * sin(-ω + xli  - G52) \
                    + d4410 * sin(2ω + 2xli - G44) \
                    - d4422 * sin(     2xli - G44) \
                    + d5421 * sin(+ω + 2xli - G54) \
                    + d5433 * sin(-ω + 2xli - G54)

それは私にずっおずっず自然に感じたす。 繰り返しになりたすが、これは芋た目の倉曎であり、それぞれが異なる意芋を持っおいたす。 問題は、それは蚀語デザむンに䜕らかの意味で害を及がすのでしょうか

その堎合、囲み括匧のペアを远加する方が簡単なようです。

はい、できたす。 しかし、やはり私芋ですが、それは䞀般的ではありたせん。 誰かがこれを芋たずしたしょう

            xndot = (+ d2201 * sin(2ω + xli  - G22)
                     + d2211 * sin(   + xli  - G22)
                     + d3210 * sin(+ω + xli  - G32)
                     - d3222 * sin(-ω + xli  - G32)
                     - d5220 * sin(+ω + xli  - G52)
                     + d5232 * sin(-ω + xli  - G52)
                     + d4410 * sin(2ω + 2xli - G44)
                     - d4422 * sin(     2xli - G44)
                     + d5421 * sin(+ω + 2xli - G54) 
                     + d5433 * sin(-ω + 2xli - G54))

数孊的な芳点からは、これらの括匧には意味がありたせん。 誰かが誀っおそれらを削陀する可胜性があり、Juliaは譊告を衚瀺せず、コヌドは完党に間違っおいたす。

私が思い぀いた最高のものは、行の最埌の非空癜ずしお\です。これは珟圚有効ですが、奇劙な構文であるため、重倧な倉曎になりたす。

同じ目的で#を䜿甚するのはどうですか 解釈は、改行をコメントアりトしおいるずいうこずです。 コメント/行の継続ずしおLaTeXが%を䜿甚しおいるずいうこの解釈を提瀺しおくれたたす

ええず、私の芳点からは、行末の#は文字が続かないので、ずおもいいはずで、壊れにくいようです。

私がここで芋おいる1぀の朜圚的な問題は、

a=1 #because reasons
 +2

に

a=1 #
 +2

異なる結果を生成したす。 しかし、これはおそらく問題ではありたせん。

ゞュリアが\\ように䜿甚しおいないものはどうですか 醜すぎたせんか

私は物事を壊すためにラテックススタむルの「新しいいいねをコメントアりトする」こずをするこずを期埅したす。

埌に空癜なしで#のみに制限されおいない限り。
䟋えば

colors = [ 0.5 0.2 0.1 0.9 # Red
                0.4 0.4 0.1 0.6 # Green
                0.1 0.2 0.1 0.1] # Blue

LaTeXでは、新しい行はありたせん。
たた、空のコメントがあるず、空でないコメントずは異なる動䜜をするのは奇劙に聞こえたす。

私は実際にゞュリアにそれを提案しおいたせんでした。
\\方がはるかに混乱が少ないず思いたす。
しかし、私は耇数行のコメントの@stevengj゜リュヌションが最も良いかもしれないず思いたす。 それは非垞に明確に改行をコメントアりトしおいたす

巚倧な耇数行リテラルを䜜成するこずはかなりニッチに思えたすが。
Array{T, 3}リテラルを持぀よりもさらにそうです。

䞀぀は、同じように効率的に䜿甚しおそれらを構築するこずができるはずですvectずcatコマンドリテラルが䜎䞋するずにかく。

提案は、 #埌に改行文字のみたたはおそらくスペヌスのみを付けるこずだったず思いたす。

ええ、私は@StefanKarpinskiが行末で#の特別な凊理を提案するこずを意味し、 #埌に他の空癜以倖のものがある堎合は絶察に数えたせん。 おそらく、LaTeXの比范は、私が蚀おうずしおいたこずを明確にするよりも混乱を招きたした。

#は、私には危険なようです。 よく芚えおいない理由や、気が倉わったコメントなどの理由で、コヌド内に#が散圚しおいるこずがありたす。末尟の#を誀っお削陀するのは非垞に簡単です。

行継続挔算子を芋逃すこずがありたすが、 \や...ように、非垞に明確にわかりやすいものにするこずをお勧めしたす。 #=たたは[]は、_トリック_に少し䌌すぎおいるようです。

䜿甚をお勧めしない堎合は、 \\\ように、少し醜いものが機胜する可胜性がありたすか

たた、行継続挔算子の埌にコメントを付けるのはごく普通のこずなので、行の最埌の非空癜文字であるこずに䟝存する必芁はありたせん。

それらがすでに他の堎所で䜿甚されおいるのか、ナヌザヌ固有の挔算子甚に予玄する必芁があるのか​​はわかりたせんが、これらのUnicode矢印のいずれかにより、明瀺的な行継続のための魅力的で盎感的なオプションが䜜成される堎合がありたす。

↩ 、 ⬎ 、たたは„

たずえば、 \continuelineなどの意味のあるタブ補完゚むリアスを䜿甚しおアクセスできるようになりたした

#= =#がこれで機胜するのは幞運だず思うので、そのたたにしおおく必芁がありたす。

すべおの行の最埌に円蚘号を付ける方が、括匧を远加したり、単に行の最埌に挔算子を眮いたりするよりも、どういうわけか優れおいるこずに同意したせん。 たた、バックスラッシュや#を悪甚しおも改善されるずは思いたせん。 それはただ驚きを加えるでしょう。 マルチキャラクタヌを䜿甚した堎合、 #= =#よりも倧幅に改善されるこずはありたせん。

すべおの行の最埌に円蚘号を付ける方が、括匧を远加したり、単に行の最埌に挔算子を眮いたりするよりも、どういうわけか優れおいるこずに同意したせん。

この問題が発生した理由は、どちらも行列リテラルでは機胜しないためです。 それでも、 #= =#すでに機胜しおいるので、おそらくこれに察しお䜕もすべきではないこずに同意したす。

#= =#を行の継続に䜿甚できるこずを確認したので、これは完党に理にかなっおいたす。 しかし、私が正盎であるならば、私は間違いなく私自身でその結論に達するこずはなかっただろう。

おそらく、前進するための最良の方法は、ドキュメントずJuliaスタむルガむドに䜕かを远加しお、行の継続は#= =#を介しお達成できるず蚀っおいるこずです。

ただ、議論を終了し、@JeffBezansonず@StefanKarpinskiは、あなたはそれが䜕かを䞭断されたせん@thchrによっお提案されたずしおも提案は、実装するためによくないず思いたすか 私はそれが次のような玠晎らしいものになるず思いたす

A = [1 2 3 4 5 „
     6 7 8 9 10]

#= =#よりも冗長でなく、芖芚的に快適です。

これは確かに玠晎らしいです。 副䜜甚は、出力が有効なコヌドを圢成するように、固定幅のディスプレむに長い行を含むコヌドを印刷する暙準的な方法を提䟛するこずです。

ただし、すでに倚くのUnicode矢印を二項挔算子ずしお解析しおいたす。

惜したないのではないかず思いたす。

良いオプション私芋

„ (2938) ↩ (8617) ↵ (8629) 

おそらく、空癜を挔算子にするずきが来たので、Cassetteを䜿甚しお倧きな行列のコンテキストで空癜をオヌバヌロヌドできたす。 幞いなこずに、Bjarne Stroustrupはすでに私たちのためにハヌドな蚭蚈䜜業を行っおくれたした– http://www.stroustrup.com/whitespace98.pdf

マルチキャラクタヌを䜿甚した堎合、 #= =#よりも倧幅に改善されるこずはありたせん。

これに反察する3぀の議論を転送したいず思いたす。

たず、これはコメントず間違えられる可胜性がありたす。 これを知っおいおも、脳は「コメント」を登録したす。

次に、1行だけでなく、2行に配眮する必芁がありたす。 これはむンデントずどのように盞互䜜甚したすか

第䞉に、それはキヌ抌䞋のより耇雑な組み合わせです私のコンピュヌタヌではshift-3 shift-0 enter shift-0 shift-3 。 ある皮のキヌボヌドショヌトカットを䜿甚できるず思いたす。 察照的に、 \\は、同じキヌを2回すばやく抌すこずですその埌にenter続きたす。

3぀半私芋それは少しぎこちなく芋え、トリックのように感じたす。

\\は、将来の䜿甚のために「予玄」されおいる可胜性があるために受け入れられない堎合でも、 @ thchrの提案は非垞に芋栄えがよいず思いたす。 それがどうなるか芋おください

            xndot = + d2201 * sin(2ω + xli  - G22) „
                    + d2211 * sin(   + xli  - G22) „
                    + d3210 * sin(+ω + xli  - G32) „
                    - d3222 * sin(-ω + xli  - G32) „
                    - d5220 * sin(+ω + xli  - G52) „
                    + d5232 * sin(-ω + xli  - G52) „
                    + d4410 * sin(2ω + 2xli - G44) „
                    - d4422 * sin(     2xli - G44) „
                    + d5421 * sin(+ω + 2xli - G54) „
                    + d5433 * sin(-ω + 2xli - G54)

そしお、それ以倖に、誰もこれを䜿甚するこずを匷制されるこずはなく、䜕も壊すこずはありたせん。 しかし、これには良いナヌスケヌスがあるず確信しおいたすこの問題を開くきっかけずなった倧きなマトリックスは1぀です。

pd = [
     1.09979E+00 -4.88060E-02 -1.97501E-01 -9.10280E-02 -6.96558E-03 „ 
     2.42136E-02  3.91333E-01 -7.20068E-03 -3.22718E-02  1.41508E+00 „
     1.68194E-01  1.85282E-02  1.09384E-01 -7.24282E+00  0.00000E+00 „
     2.96377E-01 -4.97210E-02  1.04114E+02 -8.61108E-02 -7.29177E-04 „
     1.48998E-06  1.08629E-03  0.00000E+00  0.00000E+00  8.31090E-02 „
     1.12818E-01 -5.75005E-02 -1.29919E-02 -1.78849E-02 -2.86343E-06 „
     0.00000E+00 -1.51187E+02 -6.65902E-03  0.00000E+00 -2.02069E-03 „
     0.00000E+00  0.00000E+00  4.32264E-02 -2.80444E+01 -3.26789E-03 „
     2.47461E-03  0.00000E+00  0.00000E+00  9.82100E-02  1.22714E-01 „
    -3.96450E-02  0.00000E+00 -2.76489E-03  0.00000E+00  1.87723E-03 „
    -8.09813E-03  4.34428E-05 -7.70932E-03  0.00000E+00 -2.28894E-03 „
    -5.69070E-03 -5.22193E-03  6.00692E-03 -7.80434E+03 -3.48336E-03 „
    -6.38362E-03 -1.82190E-03  0.00000E+00 -7.58976E+01 -2.17875E-02 „
    -1.72524E-02 -9.06287E-03  0.00000E+00  2.44725E-02  8.66040E-02 „
     1.05712E-01  3.02543E+04  0.00000E+00  0.00000E+00  0.00000E+00 „
    -6.01364E+03 -5.64668E-03 -2.54157E-03  0.00000E+00  3.15611E+02 „
    -5.69158E-03  0.00000E+00  0.00000E+00 -4.47216E-03 -4.49523E-03 „
     4.64428E-03  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00 „
     4.51236E-02  2.46520E-02  6.17794E-03  0.00000E+00  0.00000E+00 „
    -3.62944E-01 -4.80022E-02 -7.57230E+01 -1.99656E-03  0.00000E+00 „
    -5.18780E-03 -1.73990E-02 -9.03485E-03  7.48465E-03  1.53267E-02 „
     1.06296E-02  1.18655E-02  2.55569E-03  1.69020E-03  3.51936E-02 „
    -1.81242E-02  0.00000E+00 -1.00529E-01 -5.10574E-03  0.00000E+00 „
     2.10228E-03  0.00000E+00  0.00000E+00 -1.73255E+02  5.07833E-01 „
    -2.41408E-01  8.75414E-03  2.77527E-03 -8.90353E-05 -5.25148E+00 „
    -5.83899E-03 -2.09122E-02 -9.63530E-03  9.77164E-03  4.07051E-03 „
     2.53555E-04 -5.52875E+00 -3.55993E-01 -2.49231E-03  0.00000E+00 „
     0.00000E+00  2.86026E+01  0.00000E+00  3.42722E-04  0.00000E+00 „
     0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00 „
     0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00;
     1.02315E+00 -1.59710E-01 -1.06630E-01 -1.77074E-02 -4.42726E-03 „
     3.44803E-02  4.45613E-02 -3.33751E-02 -5.73598E-02  3.50360E-01 „
     6.33053E-02  2.16221E-02  5.42577E-02 -5.74193E+00  0.00000E+00 „
     1.90891E-01 -1.39194E-02  1.01102E+02  8.16363E-02  1.33717E-04 „
     6.54403E-06  3.10295E-03  0.00000E+00  0.00000E+00  5.38205E-02 „
     ...

それ以倖の

pd = [
     1.09979E+00 -4.88060E-02 -1.97501E-01 -9.10280E-02 -6.96558E-03 #= 
 =#  2.42136E-02  3.91333E-01 -7.20068E-03 -3.22718E-02  1.41508E+00 #=
 =#  1.68194E-01  1.85282E-02  1.09384E-01 -7.24282E+00  0.00000E+00 #=
 =#  2.96377E-01 -4.97210E-02  1.04114E+02 -8.61108E-02 -7.29177E-04 #=
 =#  1.48998E-06  1.08629E-03  0.00000E+00  0.00000E+00  8.31090E-02 #=
 =#  1.12818E-01 -5.75005E-02 -1.29919E-02 -1.78849E-02 -2.86343E-06 #=
 =#  0.00000E+00 -1.51187E+02 -6.65902E-03  0.00000E+00 -2.02069E-03 #=
 =#  0.00000E+00  0.00000E+00  4.32264E-02 -2.80444E+01 -3.26789E-03 #=
 =#  2.47461E-03  0.00000E+00  0.00000E+00  9.82100E-02  1.22714E-01 #=
 =# -3.96450E-02  0.00000E+00 -2.76489E-03  0.00000E+00  1.87723E-03 #=
 =# -8.09813E-03  4.34428E-05 -7.70932E-03  0.00000E+00 -2.28894E-03 #=
 =# -5.69070E-03 -5.22193E-03  6.00692E-03 -7.80434E+03 -3.48336E-03 #=
 =# -6.38362E-03 -1.82190E-03  0.00000E+00 -7.58976E+01 -2.17875E-02 #=
 =# -1.72524E-02 -9.06287E-03  0.00000E+00  2.44725E-02  8.66040E-02 #=
 =#  1.05712E-01  3.02543E+04  0.00000E+00  0.00000E+00  0.00000E+00 #=
 =# -6.01364E+03 -5.64668E-03 -2.54157E-03  0.00000E+00  3.15611E+02 #=
 =# -5.69158E-03  0.00000E+00  0.00000E+00 -4.47216E-03 -4.49523E-03 #=
 =#  4.64428E-03  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00 #=
 =#  4.51236E-02  2.46520E-02  6.17794E-03  0.00000E+00  0.00000E+00 #=
 =# -3.62944E-01 -4.80022E-02 -7.57230E+01 -1.99656E-03  0.00000E+00 #=
 =# -5.18780E-03 -1.73990E-02 -9.03485E-03  7.48465E-03  1.53267E-02 #=
 =#  1.06296E-02  1.18655E-02  2.55569E-03  1.69020E-03  3.51936E-02 #=
 =# -1.81242E-02  0.00000E+00 -1.00529E-01 -5.10574E-03  0.00000E+00 #=
 =#  2.10228E-03  0.00000E+00  0.00000E+00 -1.73255E+02  5.07833E-01 #=
 =# -2.41408E-01  8.75414E-03  2.77527E-03 -8.90353E-05 -5.25148E+00 #=
 =# -5.83899E-03 -2.09122E-02 -9.63530E-03  9.77164E-03  4.07051E-03 #=
 =#  2.53555E-04 -5.52875E+00 -3.55993E-01 -2.49231E-03  0.00000E+00 #=
 =#  0.00000E+00  2.86026E+01  0.00000E+00  3.42722E-04  0.00000E+00 #=
 =#  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00 #=
 =#  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00;
     1.02315E+00 -1.59710E-01 -1.06630E-01 -1.77074E-02 -4.42726E-03 #=
 =#  3.44803E-02  4.45613E-02 -3.33751E-02 -5.73598E-02  3.50360E-01 #=
 =#  6.33053E-02  2.16221E-02  5.42577E-02 -5.74193E+00  0.00000E+00 #=
 =#  1.90891E-01 -1.39194E-02  1.01102E+02  8.16363E-02  1.33717E-04 #=
 =#  6.54403E-06  3.10295E-03  0.00000E+00  0.00000E+00  5.38205E-02 #=
     ...

そのような数字の壁が「芋栄えがする」こずができる限り、各行を1行に配眮する方がはるかに芋栄えがしたす。 少なくずもその方法で、マトリックスの行数ず、行の長さが同じかどうかを知るこずができたす。

pd = [ 1.09979E+00 -4.88060E-02 -1.97501E-01 -9.10280E-02 -6.96558E-03 2.42136E-02  3.91333E-01 -7.20068E-03 -3.22718E-02  1.41508E+00 1.68194E-01  1.85282E-02  1.09384E-01 -7.24282E+00  0.00000E+00 2.96377E-01 -4.97210E-02  1.04114E+02 -8.61108E-02 -7.29177E-04 1.48998E-06  1.08629E-03  0.00000E+00  0.00000E+00  8.31090E-02 1.12818E-01 -5.75005E-02 -1.29919E-02 -1.78849E-02 -2.86343E-06 0.00000E+00 -1.51187E+02 -6.65902E-03  0.00000E+00 -2.02069E-03 0.00000E+00  0.00000E+00  4.32264E-02 -2.80444E+01 -3.26789E-03 2.47461E-03  0.00000E+00  0.00000E+00  9.82100E-02  1.22714E-01 -3.96450E-02  0.00000E+00 -2.76489E-03  0.00000E+00  1.87723E-03 -8.09813E-03  4.34428E-05 -7.70932E-03  0.00000E+00 -2.28894E-03 -5.69070E-03 -5.22193E-03  6.00692E-03 -7.80434E+03 -3.48336E-03 -6.38362E-03 -1.82190E-03  0.00000E+00 -7.58976E+01 -2.17875E-02 -1.72524E-02 -9.06287E-03  0.00000E+00  2.44725E-02  8.66040E-02 1.05712E-01  3.02543E+04  0.00000E+00  0.00000E+00  0.00000E+00 -6.01364E+03 -5.64668E-03 -2.54157E-03  0.00000E+00  3.15611E+02 -5.69158E-03  0.00000E+00  0.00000E+00 -4.47216E-03 -4.49523E-03 4.64428E-03  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00 4.51236E-02  2.46520E-02  6.17794E-03  0.00000E+00  0.00000E+00 -3.62944E-01 -4.80022E-02 -7.57230E+01 -1.99656E-03  0.00000E+00 -5.18780E-03 -1.73990E-02 -9.03485E-03  7.48465E-03  1.53267E-02 1.06296E-02  1.18655E-02  2.55569E-03  1.69020E-03  3.51936E-02 -1.81242E-02  0.00000E+00 -1.00529E-01 -5.10574E-03  0.00000E+00 2.10228E-03  0.00000E+00  0.00000E+00 -1.73255E+02  5.07833E-01 -2.41408E-01  8.75414E-03  2.77527E-03 -8.90353E-05 -5.25148E+00 -5.83899E-03 -2.09122E-02 -9.63530E-03  9.77164E-03  4.07051E-03 2.53555E-04 -5.52875E+00 -3.55993E-01 -2.49231E-03  0.00000E+00 0.00000E+00  2.86026E+01  0.00000E+00  3.42722E-04  0.00000E+00 0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00 0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00
       1.02315E+00 -1.59710E-01 -1.06630E-01 -1.77074E-02 -4.42726E-03 3.44803E-02  4.45613E-02 -3.33751E-02 -5.73598E-02  3.50360E-01 6.33053E-02  2.16221E-02  5.42577E-02 -5.74193E+00  0.00000E+00 1.90891E-01 -1.39194E-02  1.01102E+02  8.16363E-02  1.33717E-04 6.54403E-06  3.10295E-03  0.00000E+00  0.00000E+00  5.38205E-02 ...
       ...

この皮のフォヌマットの柔軟性よりも゚コシステム党䜓の䞀貫性の方が重芁であるため、耇数行にたたがる匏を蚘述する1぀の明癜な方法があるこずは玠晎らしいこずだず思いたす。

これがあるずしお、我々は物事を残しお提案し、䞀぀のこずを陀いおコンテキスト空癜は重芁であるマクロでなく、行列の構築で行を継続するれロ明癜な方法は、珟圚ありたす。 耇数行のコメントハックは巧劙ですが、醜いIMOでもありたす。

space-sensitive解析コンテキストでのみ有効な行継続を远加するこずで、これらの䞡方を䞀床に解決できたす。

# Valid - space sensitive context
<strong i="10">@info</strong> "A message which could be rather long"  „
      my_variable my_variable2                „
      some_other_variable

# Invalid - there should only be one way to do this
x = some_variable „
    + other_variable
# Valid - the current, perfectly good convention for writing this
x = some_variable +
    other_variable

cjf/line-continuationブランチの行継続甚にナニコヌド„を実装したした。 これは、スペヌスに䟝存するコンテキストに限定されない単玔なバヌゞョンですが、少し再配眮するだけで簡単になりたす。

明瀺的に結合された列分離、行継続挔算子があるず非垞に䟿利です。 OPの問題を解決し、数匏を䜿甚しお行列匏の可読性を向䞊させたす。 |を䜿甚したモックの䟋、

       [ x .+ 1 | 3*(x .+ 2) |
        12 + x | -x ]

耇数の行継続文字が必芁なのはなぜですか

具䜓的な提案をするために、私はこれに぀いおPRをしたした-29273を参照しおください

@ c42f 、私芋、特定の堎合にのみ行継続文字を蚱可するのは少し混乱するず思いたす。 なぜそれをグロヌバルにできないのですか

ステファン読みやすさのためだけに。 これは、行内の行継続文字が空癜で区切られたコンテキストでフィヌルドの分離を匷調しお匷制できるようにするこずを瀺唆するだけです。

@ronisbr次のようなほずんどの匏で行を継続する明癜な方法が1぀しかないずいう事実

x = a +
    b +
    c

私にはかなり魅力的で、私はそれを倉えたくありたせんでした。

これを次のように曞くこずもできたす

x =   a  „
    + b  „
    + c

䞍芁なバリ゚ヌションIMOを導入するだけです。

この蚀語には、解析ルヌルが異なる「スペヌスセンシティブ」コンテキストの抂念がすでにあり、このスロットはそこにきちんず収たっおいたす。

こんにちは、みんな

1.1ができたので、1.2のこの機胜に぀いお説明できたすか 少なくずも、これが最終的に新しい機胜になるのか、それずもこの問題を解決する必芁があるのか​​を刀断できたすか

cc @JeffBezanson 、別名構文czar。

耇数行のコメントを発芋したこずにより、提案完党にこの目的のために十分なず䞀般的には@stevengj、私たちはただ、マニュアルでこれを蚀及するので、蚀語を倉曎せずに問題を解決するこずができれば疑問に思いたす。 もしそうなら、私は関連する堎所でPRをしたいず思いたす1぀はマトリックス甚、もう1぀は䞀般的なアドバむスずしお。

䞀郚の蚀語にはこのための特別な構文があり、それがずきどき圹立぀こずを理解しおいたす。 ただし、非垞に長い行を蚘述したり、゜ヌスに倧きなリテラルマトリックスを含めたりするこずは、たれに必芁になる堎合ではなく、蚀語によっお奚励される習慣になるべきではないず思いたす。

耇数行のマトリックスラッピングのケヌスは、 #= =#を䜿甚しおカバヌできるほど珍しいものであり、行継続のためにこのオプションを文曞化する䟡倀があるこずに同意したす。 耇数行のマクロ呌び出しにはこの構文を䜿甚したすが、それでも醜くお面倒です。

耇数行のマクロ呌び出しの堎合は、括匧を䜿甚できたす。

私はマクロにparensを䜿甚するオプションをよく知っおいたすが、前に説明したようにそれは䞍満だず思いたす。 ぀たり、括匧ずコンマを䜿甚するず、マクロの呌び出しは、ほずんどのjuilaコヌドでマクロが「通垞芋える」方法ずは芖芚的に非垞に区別されたす。 芋た目が違うコヌドは読みにくいです。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡