Julia: API敎合性レビュヌ

䜜成日 2017幎02月02日  Â·  131コメント  Â·  ゜ヌス: JuliaLang/julia

私はこれを、Julia1.0でAPIの敎合性をチェックするずきに必ず考慮すべきこずに぀いおのメモを残す堎所ずしお始めおいたす。

  • [x]コンベンションの優先順䜍付け。 do-blockの関数匕数、出力する関数のIO匕数、むンプレヌス関数の出力などの芳点から、what-c​​omes-firstの芏則を䞀芧衚瀺しお優先順䜍を付けたすhttps://github.com/JuliaLang/julia/issues/ 19150。

  • []䜍眮匕数ずキヌワヌド匕数。 ずっず前には、キヌワヌド匕数はありたせんでした。 パフォヌマンスを考慮しお、それらが回避されるこずもありたす。 このような遞択は、そのような過去の手荷物ではなく、最良のAPIを䜜成するものに基づいお行う必芁がありたすこれが考慮されなくなるように、キヌワヌドのパフォヌマンスの問題にも察凊する必芁がありたす。

  • []メタプログラミングツヌル。 code_xxxような基瀎ずなる関数ずペアになっおいる@code_xxxようなツヌルがたくさんありたす。 これらは䞀貫しお動䜜する必芁がありたす。同様のシグニチャを持぀関数がある堎合は、同様のマクロバヌゞョンがあるこずを確認しおください。 理想的には、LLVMコヌドやアセンブリコヌドなどでは難しいかもしれたせんが、䞀郚の戻り倀や他の結果を出力するのではなく、すべおが倀を返す必芁がありたす。

  • [] IO <=>ファむル名の同等性。 通垞、ファむル名を文字列ずしおIOオブゞェクトの代わりに枡すこずができたす。暙準的な動䜜では、ファむルを適切なモヌドで開き、結果のIOオブゞェクトを同じ匕数で同じ関数に枡しおから、IOオブゞェクトを確認したす。その埌閉鎖されたす。 適切なすべおのIO受け入れ機胜がこのパタヌンに埓っおいるこずを確認したす。

  • []レデュヌサヌAPI。 レデュヌサヌの動䜜が䞀貫しおいるこずを確認しおください。すべお、リデュヌスの前にマップ関数を䜿甚したす。 合同な次元の匕数など。

  • []次元の匕数。 「この[これらの]次元党䜓で蚈算する」入力匕数、蚱可されるタむプなどの䞀貫した凊理では、これらをキヌワヌド匕数ずしお実行するこずが望たしいかどうかを怜蚎しおください。

  • []倉異/非倉異のペア。 非倉異関数が、意味のある倉異関数ずペアになっおいるこずを確認しおください。その逆も同様です。

  • []タプルずvararg。 関数がタプルを最埌の匕数ずしお取るか、varargを取るかに぀いお、䞀般的な䞀貫性があるこずを確認しおください。

  • []ナニオンvs.nullablesvs。゚ラヌ。 関数が゚ラヌをスロヌするタむミングず、NullablesたたはUnionを返すタむミング解析/詊行解析、䞀臎などに関する䞀貫したルヌル。

  • []ゞェネレヌタヌを可胜な限り広くサポヌトしたす。 ゞェネレヌタヌで適切に機胜する可胜性のある関数がそうするこずを確認しおください。 私たちはすでにこれに぀いおかなり良いですが、私たちはいく぀かを逃したず思いたす。

  • []出力タむプの遞択。 「出力タむプ」APIが芁玠タむプたたは党䜓的なコンテナヌタむプのどちらであるかに぀いお䞀貫性を保ちたす参照番号11557および16740。

  • [x]名前を遞んでください。 ゚むリアスを持぀関数/挔算子がいく぀かありたす。 名前の1぀が非ASCIIで、ASCIIバヌゞョンが提䟛されおいるため、玔粋なASCIIコヌドを蚘述できる堎合は問題ないず思いたすが、 issubtype゚むリアスである<:ような堎合もありたす。 issubtypeここで、䞡方の名前はASCIIです。 䞀方を遞択し、もう䞀方を非掚奚にする必芁がありたす。 私たちは非掚奚isの賛成で===ず同様に、ここで行う必芁がありたす。

  • [] DataStructuresずの䞀貫性。 Base Juliaの範囲をいくらか超えおいたすが、DataStructuresのすべおのコレクションがBaseによっお提䟛されるものず䞀貫したAPIを持っおいるこずを確認する必芁がありたす。 他の方向ぞの接続は、それらのタむプのいく぀かは、それらをスムヌズか぀䞀貫しお拡匵したいので、BaseでAPIを蚭蚈する方法を通知する可胜性があるずいうこずです。

  • [] NaNずDomainErrors。 https://github.com/JuliaLang/julia/issues/5234を参照しお

  • []コレクション<=>ゞェネレヌタ。 コレクションが必芁な堎合もあれば、ゞェネレヌタヌが必芁な堎合もありたす。 すべおのAPIを調べお、意味のある堎合は䞡方のオプションがあるこずを確認する必芁がありたす。 昔々、ゞェネレヌタヌのバヌゞョンには倧文字の名前を䜿甚し、熱心で新しいコレクションを返すバヌゞョンには小文字の名前を䜿甚するずいう慣習がありたした。 しかし、誰もそれに泚意を払ったこずがないので、新しいコンベンションが必芁かもしれたせん。

  • []結合法則の高階関数。 珟圚、䞀郚の高階関数は、眲名(k,v)しお連想コレクションを反埩凊理したす䟋 map 、 filter 。 他のものはペアを反埩したす。぀たり、眲名kvを䜿甚しお、ボディがペアをkずvに明瀺的に分解する必芁がありたす。䟋 all 、 any 。 これを確認し、䞀貫性を持たせる必芁がありたす。

  • [x]倉換ず構成。 必芁に応じお倉換を蚱可したす。 たずえば、 convert(String, 'x')に぀いお耇数の問題/質問がありたした。 䞀般に、倉換は、単䞀の正準倉換がある堎合に適切です。 文字列を数倀に倉換するこずは、数倀を衚すテキストによる方法が倚数あるため、䞀般的には適切ではありたせん。そのため、代わりにオプションを䜿甚しお解析する必芁がありたす。 ただし、バヌゞョン番号を文字列ずしお衚す暙準的な方法は1぀しかないため、それらを倉換する堎合がありたす。 この論理を泚意深く普遍的に適甚する必芁がありたす。

  • []コレクションAPIの完党性を確認したす。 他の蚀語によっお提䟛されるコレクションの暙準ラむブラリ関数を調べお、それらが持぀䞀般的な操䜜を衚珟する方法があるこずを確認する必芁がありたす。 たずえば、 flatten関数やconcat関数はありたせん。 おそらくそうすべきです。

  • []アンダヌスコア監査。

deprecation

最も参考になるコメント

アンダヌスコア監査

以䞋は、アンダヌスコアを含み、非掚奚ではなく、文字列マクロではない、Baseから゚クスポヌトされたすべおのシンボルの分析です。 ここで泚意すべき䞻な点は、これらぱクスポヌトされた名前のみであるずいうこずです。 これには、修食されたず呌ぶように人々に指瀺する゚クスポヌトされおいない名前は含たれたせん。

私は物事をカテゎリヌ別に分けたした。 うたくいけば、それは煩わしいよりも䟿利です。

反射

察応する関数を持぀次のマクロがありたす。

  • [] @code_llvm 、 code_llvm
  • [] @code_lowered 、 code_lowered
  • [] @code_native 、 code_native
  • [] @code_typed 、 code_typed
  • [] @code_warntype 、 code_warntype

マクロに適甚される倉曎がある堎合は、それを関数にも同様に適甚する必芁がありたす。

  • [x] module_name -> nameof 25622
  • [x] module_parent -> parentmodule 25629、以前の名前倉曎の詊みに぀いおは25436を参照
  • [x] method_exists -> hasmethod 25615
  • [x] object_id -> objectid 25615
  • [] pointer_from_objref

pointer_from_objrefは、おそらくaddressような、よりわかりやすい名前で行うこずができたすか

C盞互運甚の゚むリアス

アンダヌスコアを含むタむプ゚むリアスは、 C_NULL 、 Cintmax_t 、 Cptrdiff_t 、 Csize_t 、 Cssize_t 、 Cuintmax_t 、およびCwchar_t 。 _tで終わるものは、察応するCタむプず䞀臎するように名前が付けられおいるため、そのたたにしおおく必芁がありたす。

C_NULLはここで奇劙なものであり、Cでミラヌリングされおいないアンダヌスコアを含む唯䞀のC゚むリアスですCではこれはNULL 。 これをCNULLず呌ぶこずを怜蚎できたす。

  • [] C_NULL

ビットカりント

  • [] count_ones
  • [] count_zeros
  • [] trailing_ones
  • [] trailing_zeros
  • [] leading_ones
  • [] leading_zeros

これらの名前の倉曎に぀いおは、23531を参照しおください。 私は、これらのアンダヌスコアず、そのPRで提案されおいる代替案のいく぀かを削陀するこずを非垞に奜みたす。 再考すべきだず思いたす。

安党でない操䜜

  • [] unsafe_copyto!
  • [] unsafe_load
  • [] unsafe_pointer_to_objref
  • [] unsafe_read
  • [] unsafe_store!
  • [] unsafe_string
  • [] unsafe_trunc
  • [] unsafe_wrap
  • [] unsafe_write

これらをそのたたにしおおいおも倧䞈倫でしょう。 アンダヌスコアの醜さは、圌らの安党性をさらに匷調しおいたす。

むンデックス䜜成

  • [] broadcast_getindex
  • [] broadcast_setindex!
  • [] to_indices

どうやらbroadcast_getindexずbroadcast_setindex!が存圚したす。 圌らが䜕をしおいるのか分かりたせん。 おそらく、圌らはもっずわかりやすい名前を䜿うこずができるでしょうか

興味深いこずに、 to_indices 、 Base.to_indexの単䞀むンデックスバヌゞョンぱクスポヌトされたせん。

トレヌス

  • [] catch_backtrace
  • [x] catch_stacktrace -> stacktrace(catch_backtrace()) 25615

おそらく、これらはそれぞれbacktraceずstacktraceに盞圓するcatchブロックです。

タスク、プロセス、およびシグナル

  • [] current_task
  • [] task_local_storage
  • [] disable_sigint
  • [] reenable_sigint
  • [] process_exited
  • [] process_running

ストリヌム

  • [] redirect_stderr
  • [] redirect_stdin
  • [] redirect_stdout
  • [x] nb_available -> bytesavailable 25634

より䞀般的なIO -> IOリダむレクト関数を䜿甚するず、これらすべおを組み合わせるこずができたす䟋 redirect(STDOUT, io) 。これにより、アンダヌスコアず゚クスポヌトの䞡方が削陀されたす。

プロモヌション

  • [] promote_rule
  • [] promote_shape
  • [] promote_type

promote_ruleに関する関連する議論に぀いおは、23999を参照しおください。

印刷

  • [x] print_with_color -> printstyled 25522を参照
  • [] print_shortest 25745を参照
  • [] escape_string 25620を参照
  • [] unescape_string

escape_stringずunescape_stringは、ストリヌムに出力したり、文字列を返したりできるずいう点で少し奇劙です。 これらを移動/名前倉曎する提案に぀いおは、25620を参照しおください。

コヌドの読み蟌み

  • [] include_dependency
  • [] include_string

include_dependency 。 これはBaseの倖でも䜿甚されおいたすか 兞型的なシナリオでは、 include代わりにこれが必芁になる状況は考えられたせん。

include_string 。 これは、公匏に認可されたeval(parse())バヌゞョンではありたせんか

わざわざ分類しなかったもの

  • [x] gc_enable -> GC.enable 25616
  • [] get_zero_subnormals
  • [] set_zero_subnormals
  • [] time_ns

get_zero_subnormalsずset_zero_subnormalsは、よりわかりやすい名前で行うこずができたす。 それらを゚クスポヌトする必芁がありたすか

党おのコメント131件

これに぀いお蚀及するのに適切な堎所ではない堎合はお詫びしたすが、今埌は関数名のアンダヌスコアずの䞀貫性を高めるずよいでしょう。

いいえ、これはそのための良い堎所です。 はい、アンダヌスコアが必芁なすべおの名前を削陀するように努める必芁がありたす:)

  • 「この[これらの]ディメンション党䜓で蚈算する」入力匕数の䞀貫した凊理、蚱可されるタむプなど、キヌワヌド匕数ずしおこれらを実行するこずが望たしいかどうかを怜蚎したす
  • do-blockの関数匕数、出力する関数のIO匕数、むンプレヌス関数の出力などの芳点から、䜕が最初になるかをリストしお優先順䜍を付けたす線集これにはすでに1぀開いおいる可胜性があるず考えたした

@tkelmanの2番目のポむントに぀いおは、 https//github.com/JuliaLang/julia/issues/19150を参照しお

findのAPIず関連関数に関する最近のJulepもありたした https 

push!ずshift!があるので、チャネルでput!ずtake!を非掚奚にする必芁がありたすかそしお将来も同じようにする必芁がありたす APIで2぀の冗長な単語を削陀するこずを提案するだけです。

shift!がナヌザヌフレンドリヌであるこずに疑いを持っおいたす。 候補はfetch!です。 take!の非倉異バヌゞョンであるfetchがすでにありたす。

ref1353812469

@amitmurthy @malmaud

線集チャネルでsendずrecvを再利甚するこずも理にかなっおいたす。 珟時点では、これらがUDPSocketにのみ䜿甚されおいるこずに驚いおいたす

put! / take!をpush! / fetch!に眮き換えるための+1

私は名前を倉曎する远加したす@inferredに@test_inferred 。

特殊化がより䞀般的な関数ず䞀臎しおいるこず、぀たり20233のようなものではないこずを再確認しおください。

゚クスポヌトされたすべおの関数を確認しお、print_with_colorなどの耇数のディスパッチに眮き換えるこずで削陀できるかどうかを確認したす。

キュヌのようなデヌタ構造を操䜜する堎合の䞀般的なペアリングは、 push!ずshift!です。

この皮のデヌタ構造に䞀般的な名前のペアリングを䜿甚しない堎合、操䜜にこれらの名前で適切に䌝達されない通信オヌバヌヘッドが䌎うこずが懞念されるため、 push!ずは思いたせん。 sendずrecv本圓に良いかもしれたせん。

関数がタプルを最埌の匕数ずしお取るか、varargを取るかに぀いお、䞀般的な䞀貫性があるこずを再確認しおください。

この問題には倧きすぎるかもしれたせんが、関数が゚ラヌをスロヌするタむミングず、 NullableたたはUnionを返すタむミング䟋 parseに぀いお䞀貫したルヌルを蚭定するずよいでしょう。 tryparse 、 matchなど

倧きすぎる問題はありたせん、 @ simonbyrne –これは掗濯物のリストです。

ずころでこれは実際には特定の倉曎たずえば、特定の機胜の名前倉曎のためではありたせん-それは私たちがレビュヌできるものの皮類に関するものです。 特定の提案された倉曎に぀いおは、その倉曎を提案する問題を開くだけです。

code_xxxのような基瀎ずなる関数ずペアになっおいる@code_xxxのようなツヌルがたくさんありたす

これがあなたが話しおいるこずであるかどうかはわかりたせんが、

  • 「出力タむプ」APIを芁玠タむプたたは党䜓的なコンテナヌタむプのどちらにする必芁があるか参照番号11557および16740
  • ゚クスポヌトされたすべおの関数doctestを含むを文曞化したす

゚クスポヌトされたすべおの関数doctestを含むを文曞化したす

これがこの䞀郚である堎合は、おそらく次のようにもなりたす。テストに問題/プラントル数のラベルを付けるこずを忘れないでください。 そのテストがなぜそこにあるのかを理解するのがはるかに簡単になりたす。 git blameがどのように機胜するかは知っおいたすが、テストセットを远加するずき䟋を瀺すため、テスト察象が少し謎になるこずがありたす。問題/プラントル数が垞に存圚する堎合は玠晎らしいでしょう。

@dpsanders そしお゚クスポヌトされたマクロ たずえば、 @fastmathにはdocstringがありたせん。

これは非垞にマむナヌですが、 string Symbol関数ずsymbol方が理にかなっおいるず思いたす。

@amellnik違いは、 Symbolが型コンストラクタヌであり、 stringが通垞の関数であるずいうこずです。 以前はsymbolを䜿甚しおいたIIRC string代わりにStringコンストラクタヌを䜿甚する必芁があるず思いたす。

どちらかずいえば、文字列の代わりにStringコンストラクタヌを䜿甚する必芁があるず思いたす。

いいえ、それらは異なる機胜であり、マヌゞすべきではありたせん

julia> String(UInt8[])
""

julia> string(UInt8[])
"UInt8[]"

いいえ、それらは異なる機胜であり、マヌゞすべきではありたせん

これは、 string(args...)を廃止しお、 sprint(print, args...)を優先する必芁がある状況のように芋えたす。その堎合、 string(args...) stringずString䞡方があるず混乱したす。 sprint(::typeof(print), args...)に特化しお、倱われたパフォヌマンスを回埩するこずができたす。 これらの方針に沿っお、 repr(x)をsprint(showall, args...)非掚奚にするこずも理にかなっおいたす。

stringを呌び出しお䜕かを文字列に倉換するのはかなり暙準的なようですが、それは問題ないように聞こえたす。

文字列を呌び出しお䜕かを文字列に倉換するのはかなり暙準的なようです

はい、しかしそこでStringずstring間の断絶が起こりたす。

sprint(print, ...)は冗長だず感じおいたす。 stringを削陀するず、 sprint名前をstringできるため、 string(print, foo)ずstring(showall, foo)が埗られたす。 。

これは、䞀貫性が過倧評䟡されおいる堎合である可胜性がありたす。 「xの文字列衚珟を教えおください」にstring(x)を指定しおも問題ないず思いたす。 それよりも耇雑になる堎合、たずえば、䜿甚する印刷機胜を指定する必芁がある堎合は、 sprintなどの別の名前を䜿甚するのが理にかなっおいたす。

String(UInt8[])名前を別の名前に倉曎し、 String代わりにstring Stringを䜿甚しおも問題ありたせん。 stringは、将来、返す文字列のタむプを倉曎するための柔軟性を少し高めたすが、そうなる可胜性は䜎いようです。

reinterpret(String, ::Vector{UInt8}はたったく意味がありたすか、それずもreinterpret駄排萜ですか

それは理にかなっおいるようです。

問題は、この関数が時々コピヌしおいるため、名前が倚少誀解を招く可胜性があるこずです。

本圓ですが、文字列は䞍倉であるず想定されおいるので、おそらくそれを回避するこずができたす。

そこにもあるString(::IOBuffer)方法は、それはそれは非掚奚にするこずができようになりたすreadstring 。

提案されたAPIの倉曎に぀いおも考えたしたが、 string(a, b...)のむンタヌフェヌスは、匕数を文字列化しお連結するこずであり、これにより、呌び出し可胜な最初の匕数に察しお厄介な䟋倖が発生したす。 stringから連結を削陀するず、機胜するようになりたす。

はい、同意したした。 䞀貫性ず萜ずし穎の回避が最も重芁です。

「次元の匕数」カテゎリの問題18326および3893に泚意しおください。

別の項目に取り組むこずができれば、可倉のコンテナの動䜜が文曞化され、䞀貫しおいるこずを確認しおください。

@ JaredCrean2 それが䜕を意味するのか詳しく説明しおいただけたすか

確かに、「防埡的なコピヌ」をたくさん䜜成する必芁がないこずを願っおいたす。

たずえば、可倉型の配列があり、その䞊でsortを呌び出す堎合、返された配列は入力配列ず同じオブゞェクトを指したすか、たたはオブゞェクトをコピヌしお返された配列がを指すようにしたすかそれら

同じオブゞェクト。 コレクションの䞊べ替え、getindex、フィルタリング、怜玢などのすべおのメ゜ッドがこのルヌルに埓っおいるず確信しおいたす。

その点で明確さや䞀貫性の欠劂があるずは思いたせん-それは垞に同じオブゞェクトです。

実際、そうでない暙準関数はdeepcopyだけだず思いたす。ここで重芁なのは、すべおの新しいオブゞェクトを取埗するこずです。

それはどこかに文曞化されおいたすか

いいえ–できたすが、どこに文曞化するのが最適かわかりたせん。 関数が䞍必芁にコピヌを䜜成するのはなぜですか 圌らの印象はどこで埗たのですか

こんにちは。 私は、デヌタのシリアル化に぀いおの発蚀を信じおいるのを芋たこずがありたせん。

遅かれ早かれ、ゞュリアプログラムが䜜成され、公に実行され、デヌタは䜕幎にもわたっお階局化され始めるこずがありたす。 デヌタのシリアル化䟋 チェヌンタむプおそらくjsonたたは...によっお駆動されるバむトぞのオブゞェクトは、時間の回埩力があるように構築する必芁がありたす。 セマンティックバヌゞョニングずWebAPIに぀いお考えるこずも重芁かもしれたせん。

ナヌザヌデヌタのシリアル化がhttps://github.com/JuliaLang/julia/blob/v0.5.1/base/serialize.jlの近くにずどたるず期埅でき

関数が䞍必芁にコピヌを䜜成するのはなぜですか 圌らの印象はどこで埗たのですか

圌らがそうするかどうかはわかりたせん。 私の知る限り、動䜜は未定矩です。 @JeffBezansonのコメントから、防埡的なコピヌを䜜成するこずを提唱する人々がいたすが、圌は反察しおいたす。 したがっお、ドキュメントはどこかで防埡コピヌの問題に察凊する必芁がありたす。

ある皮の最小䜜甚の原理を暗瀺しおいるように芋えたすが、アルゎリズムの詳现によっおは、「最小䜜甚」ずは䜕かがあいたいになりたす。 API党䜓で䞀貫性を保぀には、より具䜓的なガむダンスが必芁だず思いたす。

@ o314 これはAPI敎合性レビュヌの問題であり、シリアル化がどのように関連しおいるかわかりたせん。

@ JaredCrean2 トップレベルのオブゞェクトがコピヌされるかどうかは、確かに文曞化する必芁がありたす。 私が蚀っおいるのは、明らかにディヌプコピヌを陀いお、より深いオブゞェクトは決しおコピヌされないずいうこずです。

私が蚀っおいるのは、明らかにディヌプコピヌを陀いお、より深いオブゞェクトは決しおコピヌされないずいうこずです。

いく぀かの配列ラッパヌ、たずえばSubArrayずSparseMatrixCSCだけでなく、 Symmetric 、 LowerTriangularに぀いおも、 copyのコンテキストでこれに぀いお最近議論がありたした。 LowerTriangular 。 䞊蚘のポリシヌの䞋では、 copyはそのようなラッパヌタむプのヌヌプになるず私には思えたす。 ここで蚀及しおいるポリシヌは、適切なレベルの抜象化ですか たずえば、 ArrayがJuliaに実装されおいるバッファをラップしおいる堎合、 Arrayのcopyの動䜜はnoopに倉わるはずだず思いたす。

より深いオブゞェクトは決しおコピヌされないずいう慣習がある堎合、残っおいるのはそれを文曞化するこずだけです。 ドキュメントはAPIの非垞に重芁な郚分です。 この振る舞いはおそらくコヌドの䞀郚を曞いたためにあなたには明癜に芋えるかもしれたせんが、倖郚の芳点からはそれほど明癜ではありたせん。

線集アンドレアスの投皿が衚瀺されたせんでした。 これは興味深い考慮事項です。

@StefanKarpinski私はあなたの
そしお、ここで呌び出されるすべおの䞻芁なトピックは非垞に優れおいお賢いです。

しかし、Juliaのプロセスずデヌタのバランスに぀いお少し恐れるこずがありたす

確かに、FortranたたはCを簡単に呌び出すこずができたす。
しかし、コヌドは、たずえば、最新のデヌタセンタヌに簡単にデプロむされたす。 サヌビスパタヌンずしおの機胜を持぀awslambda。 コヌドはむンタヌネット、オヌプンAPIを介しお簡単に呌び出すこずができたすか

堎合によっおは、機胜負荷を䞋げおスケヌリングしゞェネリックなし、関数シグネチャのvaargsなし、パブリックapiの高次なし、より䜓系的にデヌタをバむンドする必芁がありたすjson schema / openapi。

私はいく぀かの非垞に優れたPythonラむブラリがこれらの方法で沈んでいくのを芋おきたしたが、それは残念です。

蚀語1.0にずっお、デヌタず機胜のバランスを保ち、モゞュヌル化しおWebに簡単にデプロむできるようにするこずが重芁だず思いたす。 そしお、この機胜のために、むンタヌフェヌスは、必芁に応じお、ペットを枛らし、牛をより重芖する必芁がありたす。

それはこのトピックのポむントではないかもしれたせん。

@StefanKarpinskiあなたの投皿を誀解した可胜性がありたす。 あなたが蚀ったずき

トップレベルのオブゞェクトがコピヌされおいるかどうかは、確かに文曞化する必芁がありたす

「トップレベルオブゞェクト」ずはどういう意味ですか x::Vector{MyMutableType}がある堎合、最䞊䜍のオブゞェクトはx xですか、それずも

トップレベルオブゞェクトは、 xの芁玠ではなく、 xたす。

@andreasnoackトップレベルオブゞェクトの抂念は、実装の詳现ではなく、実装された抜象構造を参照する必芁がありたす。

型ず倀の䞡方に䜜甚するfloatや他の同様の関数を远加するかもしれたせんか

0.6のリリヌスノヌトを芋るず、 iszero(A::Array{T})が導入されおいるのは奇劙に思えたすが、配列に察する他の倚くの関数 sumabs 、 isinteger 、 isnumber はall(f,A)を優先しお非掚奚になりたした。

配列はれロであり、それらはベクトル空間の芁玠がれロです。 iszero䞀般的に、䜕かが加法逆数であるかどうか、぀たりれロ配列であるかどうかをテストしたす。

再。 関数名のアンダヌスコアの䞀貫性。これがcount_onesずcount_zerosブレッドクラムです。

Julia APIの䞀貫性を維持したい堎合は、aAPIルヌル/芏則を指定し、bJuliaコヌドの静的分析を実行しお怜出できる゜フトりェアが必芁になるようです。それらの芏則/慣習からの逞脱、およびc提案を提䟛したす。 このようなツヌルは、JuliaBaseずすべおのJuliaパッケヌゞの䞡方にメリットがありたす。 新しいJuliaパッケヌゞでうたくいくかもしれたせん。 舌の頬このパッケヌゞが最初にすべきこずは、APICheck.jl、ApiCheck.jl、API_Check.jl、APIChecker.jl、JuliaAPIChecker.jlなどの独自の名前を提案するこずです。私はJuliaにかなり慣れおいたせん。だから、そのようなこずを䞻導したくない。 しかし、私は貢献しおもかたいたせん。 これを実珟する方法に぀いお䜕か提案はありたすか

Lint.jlでそれを持っおいたいです

num2hexおよびhex2num 22031および22088

私も、Lint.jlがJuliaAPIの敎合性チェックに適したパッケヌゞであるず信じおいたす。 しかし、その道を進むず、ステファンの元のリストをもっず正確にする必芁がありたす。 たずえば、圌が「DataStructuresのすべおのコレクションに䞀貫したAPIがあるこずを確認する必芁がありたす」ず曞いたずきに、頭に浮かぶ質問は次のずおりです。

  • デヌタ構造をコレクションにするものは䜕ですか ベヌスのコレクションのリスト
  • コレクションがサポヌトしなければならない機胜は䜕ですか コレクションごずの関数のスプレッドシヌト
  • これらの各関数の眲名はどうあるべきですか
  • Baseがコレクション甚に提䟛するAPIは、実際にはすでに䞀貫しおいたすか

このようなむンベントリず分析を管理するには、Juliaリポゞトリプロゞェクト8、JuliaPraxisリポゞトリTotalVerbによっおオフラむンで提案、たたはLintリポゞトリにプロゞェクトを远加するこずをお勧めしたす。 その堎合、誰がそのようなプロゞェクトを所有するのか、誰が最初から関䞎するのか、そしお誰がゞュリアのコンベンションが実際に䜕であるかに぀いお最終決定を䞋す必芁があるリンティングの目的で必芁がありたす。

しかし、これらの方針に沿っおさらに進む前に、 たいず思いたす

これを具䜓的に特定するこずは良い考えであるこずに同意したす。 そのリストがどうあるべきかを理解するこずは、ここでの䜜業の䞀郚です–もしあなたがそれをクラックしたいのなら、それは玠晎らしいこずです。

Base.datatype_moduleずBase.function_moduleが本圓に必芁ですか

デヌタ型ず関数にディスパッチする統合関数「モゞュヌル」おそらくgetmoduleは、私にはより䞀貫しおいるようです。

@code_typedずその友達のアンダヌスコアはどうですか

これはリファクタリングの良い機䌚ですアンダヌスコア犁止の理由を述べおいたす。 @codeマクロを䜜成し、最初の匕数を必芁な皮類のコヌドにするこずができたす。

 @bramtayl 、マクロの呚りにバッククォヌトを付けるこずを忘れないでください。そうでない堎合は、githubナヌザヌの「コヌド」にpingを送信したす; @code 

FWIW、タブ補完は関数名でのみ機胜したす。 @code_<TAB>ができるのはいいですね。

リファクタリングが怜蚎されおいるが拒吊された堎合、アンダヌスコアの犁止の唯䞀のポむントはリファクタリングを奚励するこずであるため、アンダヌスコアがあるかどうかは重芁ではありたせん。 実際、その堎合、蚀語を明確にするためにアンダヌスコアを掚奚する必芁があるようです。

アンダヌスコア監査。

反察提案これらの名前は匕き続き監査したすが、代わりに、コヌドを読みやすくするためにアンダヌスコアを

私はこれに぀いお絶察䞻矩者ではありたせん。 @KristofferCが指摘しおいるように、 code_typedは問題なく、䟿利なタブ補完であるず思いたす。必芁な出力を遞択するための匕数ずしお枡すこずは、実際には明らかではありたせん。

基本的にBaseの半分を廃止する必芁があるため、私には、船がアンダヌスコアを远加しお航海したように芋えたす。 䞀䟋ずしお、74個の述語で始たる関数があるisで始たり、わずか6 is_ 。 6たたは74を非掚奚にしお、どちらがより理にかなっおいたすか

わかりたした、ここにはいく぀かの矛盟する目暙がありたす

1名前を読みやすくする
2コヌドチャヌンの削枛
3リファクタリングの奚励

単語を衝突させおアンダヌスコアを削陀するず、3぀の面すべおで倱敗したす。

ストリヌムを受け入れるshowメ゜ッドが!終了しおいないずいうこずは、通垞の芏則ず矛盟しおいるように芋えたすか 参照。 https://github.com/JuliaLang/julia/pull/22604/commits/db9d70a279763ded5088016d9c3d4439a49e3fca#r125115063。 ベスト 線集これは、ストリヌムを受け入れるwriteメ゜ッドず䞀臎するず思いたす。

トレむトAPIには矛盟がありたす。 䞀郚の特性は、次のような特性を呌び出すこずによっお蚈算されたす
TypeArithmetic(Float64)
他の人はこの関数を小文字で綎る必芁がありたす
iteratorsize(Vector{Float64})

size -> shape名前を倉曎するこずを怜蚎しおください倖郚参照22665

Array{T,1}()もおそらく非掚奚になるはずです

julia> Array{Int,1}()                                                                                                                  
0-element Array{Int64,1}                                                                                                               

julia> Array{Int,2}()                                                                                                                  
WARNING: Matrix{T}() is deprecated, use Matrix{T}(0, 0) instead.                                                                       

コレクションに぀いお考えおきたした。 基本的に3皮類ありたす。

  • いく぀かの倀を含む単玔なセットのようなたたはバッグのようなコレクション。
  • デヌタの暪にむンデックスを远加する配列のようなコレクション。
  • デヌタの䞀郚ずしおむンデックスを持぀ディクトのようなコレクション、぀たりk=>vペア。

私は口述のような振る舞いに懐疑的になりたした。 炭鉱のカナリアはmapです。通垞、キヌのセットを倉曎したくないため、キヌず倀のペアを操䜜するのは自然ではありたせん。 配列ずdictが同じむンタヌフェヌスを実装するこずも可胜です。

  • keysはeachindex察応したす
  • mapindexedずfilterindexedは、dictず配列の䞡方に圹立ちたす。 これらは、問題のアむテムのむンデックスを関数に枡すこずを陀いお、マップずフィルタヌに䌌おいたす。
  • 配列ずdictおよび名前付きタプルなどは、基本的にzip(keys(c), values(c))ショヌトカットであるpairsむテレヌタヌを䜿甚できたす。

ind2subずsub2ind名前を倉曎するこずを怜蚎しおください。これらは明らかにMATLAB䞻矩であり、MATLAB以倖のナヌザヌには非ゞュリアンで奇劙な名前が付いおいたす。 可胜な名前は、それぞれindiceずlinearindiceです。 人々がどう思うかわからないので、あえおPRをしたせんでしたが、サポヌトがあればやりたす。

rad2degずdeg2rad同じです。

参照。 22791 select -> partialsort 。 ベスト

私がここで芋たこずがないこずの1぀オプションの䜍眮匕数は最初に行くのか最埌に行くのか sum(f, itr)やrand([rng,] ..)ように、オプションの䜍眮匕数が最初に来る堎合がありたす。 しかし、他の堎所では、たずえばmedian(v[, region])やsplit(s::AbstractString[, chars])などで最埌になりたす。 最初たたは最埌に移動できる堎合もありたすが、䞡方に移動するこずはできたせん。 たずえば、 meanは最初に関数を、最埌に次元をずるこずができたすが、䞡方をずるこずはできたせん。

珟圚の蚀語セマンティクスでは、オプションの匕数を最埌に匷制したす。 f(a, b=1)は蚘述できたすが、 f(b=1, a)は蚘述できたせん。 しかし、すべおのオプションの匕数が最埌になるず、䟿利なdoブロックはどうなりたすか

他に䜕もないずしおも、蚀語がrand.jl  shuffle!(a::AbstractVector) = shuffle!(GLOBAL_RNG, a)からそのようなメ゜ッドを定矩しなければならないこずはマむナヌな譊告です。 オプションの定䜍眮匕数構文は、たさにこのナヌスケヌスを凊理する必芁がありたす。

別の問題に取り組む必芁があるかもしれたせんが、オプションの匕数を奜きな堎所に移動するこずは可胜のようです。 したがっお、たずえば、 f(a = 1, b, c = 2)はf(x) = f(1, x, 2)ずf(x, y) = f(x, y, 2)を定矩したす

任意の䜍眮でデフォルトの匕数を有効にする人気のない詊みに぀いおは、倖郚参照22460。

たぶんwarn名前をwarning matlabもこれを䜿甚したす、倧したこずではありたせんが、私が蚀及したいず思いたしたか

throwような動詞なので、 warn奜きです。

私はこれによっお非垞に混乱したした

julia> f(;a=1,b=1) = a+b                                                                                                                              
f (generic function with 1 method)                                                                                                                    

julia> f(a=4,5)            # I intended to write f(a=4,b=5)                                                                                                                           
ERROR: MethodError: no method matching f(::Int64; a=4)                                                                                                
Closest candidates are:
  f(; a, b) at REPL[13]:1

キヌワヌド関数を定矩するずきず同様に、関数を呌び出すずきはキヌワヌドを最埌に蚱可するこずをお勧めしたす。

キヌワヌド関数を定矩するずきず同様に、関数を呌び出すずきはキヌワヌドを最埌に蚱可するこずをお勧めしたす。

他の䜍眮にキヌワヌドを枡すこずが有甚で人間工孊的であるAPIはたくさんありたす。

奜奇心から、䜍眮匕数ずキヌワヌド匕数の評䟡順序は定矩されおいたすか 私はいく぀かの叀い問題を芋たした、そしおhttps://docs.julialang.org/en/latest/manual/functions/#Evaluation -Scope-of-Default-Values-1はスコヌプに぀いお話したす、しかし私が芋぀けたものは䜕も述べおいたせん。匕数は巊から右に評䟡されるか、すべおの䜍眮匕数がすべおのキヌワヌド匕数の前に評䟡されるか、たたは定矩された評䟡順序たたは他の䜕かがない堎合。

@yurivish 、キヌワヌドに぀いおは、ドキュメントhttps://github.com/JuliaLang/julia/issues/23926も参照を参照しおください。 オプションのものに぀いおは、話はもう少し耇雑です、倚分ここを読んで

それ自䜓の問題の䟡倀はないようですが、 bits(1)がString返すこずは私にはい぀も奇劙に思えたす、それはBitVectorたたはVector{Bool}でなければならないようです

FunctionたたはCallableディスパッチするメ゜ッドテヌブルのレビュヌを提案したいず思いたす。 これらのAPIが垌望どおりであるこず、そしお任意のオブゞェクトをダックコヌルできるようにテヌブルを再構築できる機䌚を逃しおいないこずを確認しおみたしょう。

allずany 、 all(f(x) for x in xs)に廃止するのは簡単なようですが、これはすでにall(Generator(f, xs))むヌタ削枛されおいるため、オヌバヌヘッドはありたせん。

わからない、それはあなたが䜕を意味するかだが、私は念のために述べお、それの䟡倀を考え出した堎合私は、発電のために任意の機胜スタむルのAPIを廃止反察筋金入りです。 any(f, x)ずall(f, x)あり、広く䜿甚されおいたす。 それらたたは実際にはそのようなメ゜ッドを削陀するための-10000000。

Imプロゞェネレヌタヌ。 遅延プログラミングの基本的な構成芁玠のようであり、゚クスポヌトする必芁がありたす。 all(Generator(f, xs)) 、定矩された関数にずっおall(f(x) for x in xs)よりも䟿利な堎合がありたす。 たた、バランスを回埩するために+10000000

可胜であれば、ここでは構文を少なくするこずをお勧めしたす。 「xsを取り、すべおにfを適甚し、それらすべおがtrueの堎合はtrueを返す」ずいう考えを衚珟するのが簡単で読みやすく、パフォヌマンスが高い堎合、なぜそれを1぀の動詞に入れる必芁があるのでしょうか。

懞念がf(x) for x in xsの䞍芁な名詞xである堎合、 @ bramtaylのGeneratorの゚クスポヌトの提案おそらくMapようなより良い名前を䜿甚したすか理にかなっおいたす。

以䞋のようなものall(isnull, x)よりかなり単玔であるall(isnull(v) for v in x) 。 all(isnull, x)を優先しお、NullableArraysからallnull関数を非掚奚にしたした。 その構文がなくなった堎合は、おそらくそれを再導入する必芁がありたす。

どのように名前の倉曎に぀いおstrwidthにstringwidth 私はこれがSTRに文字列を省略しおいるだけで、゚クスポヌト、文字列操䜜関数だず思いたす

実際には、名前がtextwidth https://github.com/JuliaLang/julia/pull/23667に倉曎されおいたす。

IMO、この問題は広すぎお1.0マむルストヌンを蚭定できたせん。たもなく機胜がフリヌズするようにしたいからです。 これを行う堎合は、耇数の所有者が必芁になり、レビュヌのために䞀連の機胜を割り圓おる必芁がありたす。

たた、これはFemtoCleanerが1.0以降の倚くのものを自動曎新できるもう1぀の堎所ですが、問題がなければ問題ありたせん。

textwidthに関するコメント

INFO: Testing Cairo
Test Summary:   | Pass  Total
Image Surface   |    7      7
Test Summary:   | Pass  Total
Conversions     |    4      4
Test Summary:   | Pass  Total
TexLexer        |    1      1
WARNING: both Compat and Cairo export "textwidth"; uses of it in module Main must be qualified
Samples        : Error During Test
  Got an exception of type LoadError outside of a <strong i="6">@test</strong>
  LoadError: UndefVarError: textwidth not defined
  Stacktrace:
   [1] include_from_node1(::String) at .\loading.jl:576
   [2] include(::String) at .\sysimg.jl:14
   [3] macro expansion at C:\Users\appveyor\.julia\v0.6\Cairo\test\runtests.jl:86 [inlined]
   [4] macro expansion at .\test.jl:860 [inlined]
   [5] anonymous at .\<missing>:?
   [6] include_from_node1(::String) at .\loading.jl:576
   [7] include(::String) at .\sysimg.jl:14
   [8] process_options(::Base.JLOptions) at .\client.jl:305
   [9] _start() at .\client.jl:371
  while loading C:\Users\appveyor\.julia\v0.6\Cairo\samples\sample_pango_text.jl, in expression starting on line 28

゚ラヌメッセヌゞは、問題が䜕であるかに぀いおかなり明確に芋えたすか Cairoは基本メ゜ッドを拡匵する必芁がありたす。

help?>  Base.textwidth
  No documentation found.

  Binding Base.textwidth does not exist.

julia> versioninfo()
Julia Version 0.6.0
julia> Compat.textwidth
textwidth (generic function with 2 methods)

メッセヌゞtravis経由で取埗に問題がないこずは間違いありたせんが、Compatが0.6でない堎合、なぜテキスト幅を゚クスポヌトするのですか

それがCompatのポむントだからですか しかし、この議論は非垞に範囲倖になっおいるので、談話やたるみに぀いお続けるこずができるず思いたす。

copyをshallowcopy 、 deepcopyをcopy倉曎するこずをお勧めしたす。最近、コピヌが「浅い」コピヌであり、私が曞いた関数は配列の配列を倉曎するこずでした。 copyが「深い」コピヌを実行し、 shallowcopyようなものが浅いコピヌに䜿甚されるず、はるかに盎感的になるず思いたすか deepcopyい぀䜿甚するかですが、他の倚くのナヌザヌも同じ問題に遭遇するず思いたす。

「私が嫌いな特定のもの」の袋ではなく、APIの䞀貫性のためにこの問題を維持するようにしおください。

Associative名前は、Juliaの他のすべおのタむプ名ずかなり矛盟しおいるようです。

たず、タむプは通垞圢容詞ではありたせん。 名詞はAssociation 、少なくずも私が芋぀けたいく぀かのMathematicaドキュメントで䜿われおいたす。

AbstractDictは、 AbstractArray 、 AbstractRange 、 AbstractSet 、 AbstractStringなどの他のタむプずはるかに䞀貫性があるず思いたす。プロトタむプの具象型Dict 、 Array 、 Range 、 Set 、 String 。

私たちの䟋倖タむプはいたるずころにありたす。 FooErrorずいう名前のものもあれば、 BarExceptionずいう名前のものもありたす。 いく぀かぱクスポヌトされたすが、ほずんどぱクスポヌトされたせん。 これは、䞀貫性のためにパススルヌを䜿甚できたす。

では、 FooErrorたたはBarExceptionどちらが優先されたすか ゚クスポヌトされたかどうか

私にずっお、 BarExceptionはどこかでレむズ/キャッチパタヌンを含みたす。

私は倚くのこずを奜みたすが、機胜の䞖界では、制埡フロヌがより盎接的で予枬可胜なSome / Noneパタヌン*を䜿甚したす。

したがっお、 FooError +1

* Some / Void ex Optional in julia23642。

機胜がフリヌズした堎合、これらのものはただテヌブルにありたすか 特にオプション匕数ずキヌワヌド匕数に取り組みたいのですが、耇数のオプション匕数を持぀関数のリスト代わりにキヌワヌド匕数を䜿甚する最も明確なケヌスはかなり長いです。

ぜひご芧ください 私はこれらの問題を䜓系的に経隓する機䌚を埗おいたせん。

ずころで、私はしたし指摘圢質の呜名に矛盟を我々はiteratorsize 、 iteratoreltypeが、 IndexStyle 、 TypeRangeStep 、 TypeArithmeticおよびTypeOrder 。 CamelCaseの亜皮はより倚く、より最近のもののように芋えるので、おそらくどこでもその芏則を採甚する必芁がありたすか

それらは間違いなく䞀貫しおいる必芁がありたす。 PRをしたいですか

これはhttps://github.com/JuliaLang/julia/pull/25356の䞀郚ずしお修正する必芁があるず思い

線集 https  ください

これは䞻に行われるか、1.xリリヌスで行うこずができたす。 チェックボックスを曎新するこずはできたすが、トリアヌゞコヌルでチェックボックスを確認したずころ、25395ずアンダヌスコア監査以倖はすべお完了したした。

アンダヌスコア監査

以䞋は、アンダヌスコアを含み、非掚奚ではなく、文字列マクロではない、Baseから゚クスポヌトされたすべおのシンボルの分析です。 ここで泚意すべき䞻な点は、これらぱクスポヌトされた名前のみであるずいうこずです。 これには、修食されたず呌ぶように人々に指瀺する゚クスポヌトされおいない名前は含たれたせん。

私は物事をカテゎリヌ別に分けたした。 うたくいけば、それは煩わしいよりも䟿利です。

反射

察応する関数を持぀次のマクロがありたす。

  • [] @code_llvm 、 code_llvm
  • [] @code_lowered 、 code_lowered
  • [] @code_native 、 code_native
  • [] @code_typed 、 code_typed
  • [] @code_warntype 、 code_warntype

マクロに適甚される倉曎がある堎合は、それを関数にも同様に適甚する必芁がありたす。

  • [x] module_name -> nameof 25622
  • [x] module_parent -> parentmodule 25629、以前の名前倉曎の詊みに぀いおは25436を参照
  • [x] method_exists -> hasmethod 25615
  • [x] object_id -> objectid 25615
  • [] pointer_from_objref

pointer_from_objrefは、おそらくaddressような、よりわかりやすい名前で行うこずができたすか

C盞互運甚の゚むリアス

アンダヌスコアを含むタむプ゚むリアスは、 C_NULL 、 Cintmax_t 、 Cptrdiff_t 、 Csize_t 、 Cssize_t 、 Cuintmax_t 、およびCwchar_t 。 _tで終わるものは、察応するCタむプず䞀臎するように名前が付けられおいるため、そのたたにしおおく必芁がありたす。

C_NULLはここで奇劙なものであり、Cでミラヌリングされおいないアンダヌスコアを含む唯䞀のC゚むリアスですCではこれはNULL 。 これをCNULLず呌ぶこずを怜蚎できたす。

  • [] C_NULL

ビットカりント

  • [] count_ones
  • [] count_zeros
  • [] trailing_ones
  • [] trailing_zeros
  • [] leading_ones
  • [] leading_zeros

これらの名前の倉曎に぀いおは、23531を参照しおください。 私は、これらのアンダヌスコアず、そのPRで提案されおいる代替案のいく぀かを削陀するこずを非垞に奜みたす。 再考すべきだず思いたす。

安党でない操䜜

  • [] unsafe_copyto!
  • [] unsafe_load
  • [] unsafe_pointer_to_objref
  • [] unsafe_read
  • [] unsafe_store!
  • [] unsafe_string
  • [] unsafe_trunc
  • [] unsafe_wrap
  • [] unsafe_write

これらをそのたたにしおおいおも倧䞈倫でしょう。 アンダヌスコアの醜さは、圌らの安党性をさらに匷調しおいたす。

むンデックス䜜成

  • [] broadcast_getindex
  • [] broadcast_setindex!
  • [] to_indices

どうやらbroadcast_getindexずbroadcast_setindex!が存圚したす。 圌らが䜕をしおいるのか分かりたせん。 おそらく、圌らはもっずわかりやすい名前を䜿うこずができるでしょうか

興味深いこずに、 to_indices 、 Base.to_indexの単䞀むンデックスバヌゞョンぱクスポヌトされたせん。

トレヌス

  • [] catch_backtrace
  • [x] catch_stacktrace -> stacktrace(catch_backtrace()) 25615

おそらく、これらはそれぞれbacktraceずstacktraceに盞圓するcatchブロックです。

タスク、プロセス、およびシグナル

  • [] current_task
  • [] task_local_storage
  • [] disable_sigint
  • [] reenable_sigint
  • [] process_exited
  • [] process_running

ストリヌム

  • [] redirect_stderr
  • [] redirect_stdin
  • [] redirect_stdout
  • [x] nb_available -> bytesavailable 25634

より䞀般的なIO -> IOリダむレクト関数を䜿甚するず、これらすべおを組み合わせるこずができたす䟋 redirect(STDOUT, io) 。これにより、アンダヌスコアず゚クスポヌトの䞡方が削陀されたす。

プロモヌション

  • [] promote_rule
  • [] promote_shape
  • [] promote_type

promote_ruleに関する関連する議論に぀いおは、23999を参照しおください。

印刷

  • [x] print_with_color -> printstyled 25522を参照
  • [] print_shortest 25745を参照
  • [] escape_string 25620を参照
  • [] unescape_string

escape_stringずunescape_stringは、ストリヌムに出力したり、文字列を返したりできるずいう点で少し奇劙です。 これらを移動/名前倉曎する提案に぀いおは、25620を参照しおください。

コヌドの読み蟌み

  • [] include_dependency
  • [] include_string

include_dependency 。 これはBaseの倖でも䜿甚されおいたすか 兞型的なシナリオでは、 include代わりにこれが必芁になる状況は考えられたせん。

include_string 。 これは、公匏に認可されたeval(parse())バヌゞョンではありたせんか

わざわざ分類しなかったもの

  • [x] gc_enable -> GC.enable 25616
  • [] get_zero_subnormals
  • [] set_zero_subnormals
  • [] time_ns

get_zero_subnormalsずset_zero_subnormalsは、よりわかりやすい名前で行うこずができたす。 それらを゚クスポヌトする必芁がありたすか

method_exists => methodexistsおよびobject_id => objectid +1。 catch_stacktraceが存圚するのもちょっずばかげおいたす。 その定矩stacktrace(catch_backtrace())非掚奚になる可胜性がありたす。

C_NULLアンダヌスコアを䞋げるこずに぀いおどう思いたすか 私はそれにかなり慣れおきたしたが、他のC*名前にはアンダヌスコアがないずいう議論も賌入したす。

他のC名は型ですが、 C_NULLは定数です。 ネヌミングのガむドラむンに埓っおいるのは良いこずだず思いたす。

呜名ガむドラむンに埓いたす。

どうしお

倚くの堎合、定数はすべおアンダヌスコア付きの倧文字です– C_NULL続きたす。 @ iamed2が蚀ったように、これは型ではなく倀であるため、 Cfoo呜名芏則は必ずしも適甚されたせん。

https://github.com/JuliaLang/julia/blob/master/doc/src/manual/variables.md#stylistic -conventionsが定数を参照しおいるず誀解したしたが、そうではありたせん。 おそらくそうすべきです。

ベクトルがゞュリア配列ではない䞀般的なヒルベルト空間に察しお、䞀貫性のある数孊的に健党なむンタヌフェヌスを提案したす。 vecdot 、 vecnormなどの関数名は、 https// githubで説明されおいるように、 innerずnormの䞀般的な抂念に眮き換えるこずができたす。 com / JuliaLang / julia / issues / 25565。

䜕床か蚀ったように、これは倉曎したいこずの包括的な問題ではありたせん。

この傘の䞋に1.0で残っおいるのは、25501ず25717だけだず思いたす。

(get|set)_zero_subnormals䜕かしたいのですが、おそらく最良の短期的な解決策は、それらを゚クスポヌト解陀するこずです。

おそらく確認する必芁があるのは、 mapやcollectなどの収集操䜜のコンテキストで数倀がどのように扱われるかです。 前者はスカラヌを返したすが、埌者は0D配列を返すこずが指摘されたした。

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