タグ付けされた質問 「compiler-construction」

タグcompiler-constructionは、コンパイラーのプログラミングに関する質問、またはコンパイラーの詳細な内部動作に関する質問に適用する必要があります。特定のコンパイラの*使用*またはコンパイルエラーに関する質問には使用しないでください。

8
なぜGDBは行間を予期せずジャンプし、変数を「<valueoptimizedout>」として出力するのですか?
誰かがgdbのこの動作を説明できますか? 900 memset(&amp;new_ckpt_info,'\0',sizeof(CKPT_INFO)); (gdb) **903 prev_offset = cp_node-&gt;offset;** (gdb) **905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb-&gt;shm_addr.ckpt_addr+sizeof(CKPT_** HDR),i_offset); (gdb) **903 prev_offset = cp_node-&gt;offset;** (gdb) **905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb-&gt;shm_addr.ckpt_addr+sizeof(CKPT_ HDR),i_offset);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 …


2
合計型-Haskellで `show(Int | Double)`が `(show Int)|と異なる理由 (ダブルを表示) `
なぜこれらは同等ではないのですか? show $ if someCondition then someInt else some double そして if someCondition then show someInt else show someDouble if ... else最初の例の部分を単独で式に分離した場合Int | Double、TypeScriptで簡単に実行できるようなTypeのような匿名合計型でその型を表すことができないことを理解しています(TypeScriptについて言及しているため、 langaugeは頻繁に使用し、Sum型をサポートしているため、Eitherデータを使用する必要があるため、それに基づいてを呼び出しますshow。 ここで示した例はささいなことですが、私にとっては、someCondition「何かを表示し、何かが依存する」と考える方が理にかなっています。コードの重複が少ない場合(ここでは、ショーが2回繰り返されますが、長い関数のアプリケーションでif ... elseある可能性があり、2つ以上の分岐を検討する必要がある場合もあります) 私の考えでは、合計型(ここではInt | Double)を構成する各型がshow関数のパラメーターとして使用できるかどうかをコンパイラーがチェックし、型が正しいかどうかを判断するのは簡単です。さらに良いのは、show関数がstringパラメーターのタイプに関係なく常に返されるため、コンパイラーがすべての可能な「ブランチ」(したがってすべての可能なタイプ)を運ぶ必要がないことです。 そのような機能が存在しないのは選択によるものですか?それとも、実装するのは難しいと思いますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.