問題タブ [nim-lang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
596 参照

interpreter - Nimrod の Brainfuck 通訳

私は言語で Brainfuck インタープリターを作成することにより、 nim (執筆時点ではまだ nimrod と呼ばれています) をいじっています。ループを実装しないと、次のようになります。

正常にコンパイルされますが、次のような入力をスローすると:

「N」を返す文字「A」を出力する必要があります。何か案は?

0 投票する
2 に答える
902 参照

d - Nimrod の Ada のような型

今日、私は D メーリング リストで、たとえば Ada のwikiページの例と同様の方法でカスタム データ型を定義して使用できるかどうかを尋ねました。

そして返信は次のようなものを示しました:

これは可能であることを示していますが、おそらく Ada のエレガンスを見逃しています。

さて、最近 Nimrod について読んだ後、同じ Ada の型安全性を確保するために、Nimrod が同様のタスクをどのように処理できるのだろうか?

0 投票する
2 に答える
1365 参照

bitwise-operators - Nimrod では、ビット演算の構文は何ですか?

Nimrod を発見したばかりで、基本的な質問があります (ドキュメントで答えが見つかりませんでした)。

ビット演算をどのように使用しますか? x が int として定義されている次のコードがあります。

これはコンパイルされません:

そして、私が試してみると:

私は得る

トリックは何ですか?

0 投票する
1 に答える
308 参照

inheritance - Nimrod プログラムをコンパイルする継承された型の宣言されていないフィールド

次のコードをコンパイルしようとします。

しかし、次のエラーが表示されます。

エラー: 宣言されていないフィールド: 'id'

どのようにid宣言されていませんか?コード サンプルは、チュートリアルから直接引用したものです。チュートリアルに反映されていない言語の変更はありましたか?


また、次のコードを実行しようとすると:

次のエラーが表示されます。

SIGSEGV: 不正なストレージ アクセスです。(nil から読み取ろうとしていますか?)

なんで?

0 投票する
1 に答える
685 参照

include - Nim で失敗したインポートから回復するにはどうすればよいですか?

Nimでは、次のコードを記述して外部モジュールをインポートできます。

これは、モジュールがある限り問題なく機能しますが、コードをダウンロードする可能性があり、モジュールがインストールされていない場合、コンパイルはあまりユーザーフレンドリーではないメッセージで失敗します。

例外と同様にキャッチして、ステートメントと同様のコードの代替ブランチを実行importできるようにラップする方法はありますか? のようなマクロまたは次のように使用できるものを見つけたいと思っていました。whenimportable

実際、単純なエラー メッセージではなく、いくつかのモジュールをオプションにしたいと考えています。これにより、おそらく機能が制限された状態でコンパイルが続行されます。これは可能ですか?

解決策の編集:ここでの回答に基づいて、問題を解決する方法を私のバージョンに示します。最初moduleCheckerに、次のソースを含むバイナリが必要です。

次に、このコマンドを使用できるようにすると、次のマクロを使用できます。

staticWrite現在のバージョンにはコンパイル時にファイルを生成するプロセスがないため、外部コンパイルだけでなく、チェック用の一時ファイルを生成する別のプロセスも生成する必要があるのは非常に残念です。

0 投票する
1 に答える
956 参照

parsing - Nimrod でコンパイル時に文字列を解析するにはどうすればよいですか?

Nimrodのチュートリアルの第 2 部を進めていくと、マクロについて説明する部分に到達しました。ドキュメントには、コンパイル時に実行されると書かれているので、文字列を解析してドメイン固有の言語を自分で作成できると考えました。ただし、これを行う方法の例はありません。デバッグ マクロの例には、文字列パラメーターの処理方法が表示されていません。

次のようなコードを変換したい:

…手書きで次のように記述します。

明らかに、この例はあまり役に立ちませんが、より複雑なものを実装するのに役立つ単純なもの (複数行/カンマ分割、変換) を見てみたいと思います。

ここでの私の問題は、マクロがどのように入力文字列を取得し、それを解析するか (コンパイル時!)、およびコンパイル時に実行できるコードの種類 (それは単なる言語のサブセットですか? 他のマクロ/コードを使用できますか?インポートされたモジュール)?

編集:答えに基づいて、質問に対する可能なコード解決策があります:

0 投票する
3 に答える
332 参照

macros - 複雑なパラメーターを Nimrod マクロに渡す

設定パラメータをマクロに渡したいです。これらのパラメーター (シーケンスのタプル) に基づいて Nimrod コードの文字列を生成する手順が既にあります。文字列を渡してstrValで変換できることはわかっています(回答https://stackoverflow.com/a/19956317/334703を参照)。より複雑なデータでも同じことができますか?

または、この Nimrod コードの文字列をコンパイル時のプロシージャで使用して、 parseStmtなどのプロシージャを呼び出すことはできますか?

編集: Nimrod コードの生成は、私のアイデアをテストするのに役立ちました。AST を直接生成する必要があることに同意します。

これが私が考えている構造の例です。

0 投票する
2 に答える
5940 参照

pointers - Nimの値と参照のモデルは何ですか?

注:ポインターと参照の違いについて質問しているわけではありません。この質問では、まったく関係ありません。

明示的に述べられていないことが 1 つあります。Nim はどのモデルを使用していますか?

C++ のように -- 値があり、newデータへのポインタを作成する場所 (このような場合、変数はポインタへのポインタへのポインタを保持できます... データへのポインタ)?

または、C# のように、値として POD 型を持っていますが、(暗黙的に) 参照されるユーザー定義オブジェクトがありますか?

Goのように、逆参照のみが自動であることがわかりました。

言い換えます。Studentたとえば、新しいタイプを(名前、大学、住所で)定義します。あなたが書く:

  1. (型/クラスの)student実際のデータを保持するStudent
  2. studentデータへのポインタを保持する
  3. studentデータへのポインタへのポインタを保持する

それともそれらの点からいくつかは不可能ですか?

0 投票する
1 に答える
267 参照

ubuntu - Nimrod に Babel をインストールする際の問題

のインストールに問題がありbabelます。

まず、github からすべてをダウンロードしました。

そして、私は使用してインストールしようとしました、

しかし、私はこれを手に入れました、

Ubuntu 12.04 LTS を実行しており、Nimrod 0.9.2 が にインストールされてい/opt/nimrod/ます。私の最初の本能は を行うsudo chmod a+rwx /opt/nimrodことでしたが、それは何も解決しませんでした. 何かアイデアはありますか?