問題タブ [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 に答える
896 参照

templates - テンプレートとマクロでの型付き vs 型なし vs expr vs stmt

私は最近、テンプレートとマクロを使用していますが、これらの重要なタイプに関する情報はほとんど見つかりませんでした。これは私の表面的な理解です:

  • typed/expr は事前に存在している必要がありますが、.immediate を使用できます。それらを克服するために。
  • untyped/stmt は、以前に定義されていないもの/1 つ以上のステートメントです。

これは、タイプの非常に漠然とした概念です。どのタイプを戻り値として使用する必要があるかなど、それらについてのより良い説明が必要です。

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

nim-lang - 配列の MD5、array[0..63, uint8] から cstring への変換

array[0..63, uint8] で md5Update を実行しようとしていますが、

バッファではなくctring入力が必要なようです。バイナリ データに対して md5Update() を実行するにはどうすればよいですか? (最後にヌル文字は入れたくない…)

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

c++ - 次の C++ コードを Nim に変換する

コードのさまざまな部分を変換して Nim を学習しようとしていますが、これまで見たことのないものに出くわしました。

三項演算子とは何か、それがどのように機能するかは理解していますが、変数 "t" と "cnt" (両方とも整数) と配列 "p" (整数の配列) で何が起こっているのかはよくわかりません。"p" のインデックスとしてインクリメントを使用するとどのように機能しますか?

次に、並べ替え関数があります。これは、それが何をするかについてのドキュメントが見つからなかったため、完全にあきらめました (配列に追加された整数を取得しているという事実は明らかに役に立ちません)。

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

generic-programming - Nim テンプレートで expr の文字列表現を取得する方法

内の式 (または識別子) の文字列表現を取得する可能性はありtemplateますか? たとえば、次のコードがあります。

nameテンプレート内の式の文字列表現を取得することは可能ですか?

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

profiling - ニムプロフの使い方

私の Nim プロジェクトの 1 つで、パフォーマンスの問題が発生しています。私は今、nimprof何が起こっているのかを見るために使用しようとしています。import nimprofメインのソース ファイルに があり、--profiler:on. プログラムを実行すると、次のメッセージが表示されます。

ただし、profile_results.txtこれのみが含まれます:

実行時間は約 1 分だったので、何かをサンプリングするのに十分な時間ではないと思います。からもっと意味のあるものを得る方法はありますnimprofか?

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

nim-lang - Nim: Mac では、標準インポートを開くことができません

Mac で nim を使用していますが、次の行で問題が発生しています。

コンパイルしようとすると、次のエラーが発生します。

csvx.nim(1, 6) エラー: 'strutils' ~/dev/polyglot/csvx/ を開けません

「生成されたCコードに基づくインストール」オプションを使用してnimをインストールしました。

0 投票する
4 に答える
2200 参照

nim-lang - シーケンスから複数の変数をアンパック

以下のコードが印刷されることを期待していますchr7

代わりに、それは印刷し@[chr7, 127471196, 127472363]ます。

シーケンスから複数の値を同時にアンパックする方法はありますか?

そして、要素が連続していない場合、上記を行う最も簡単な方法は何でしょうか? 例えば:

エラーが発生します:

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

nim-lang - Nim: nil でないことを証明するには?

私にとって、Nim の最も興味深い機能の 1 つはnot nilアノテーションです。これは基本的に、コンパイラの助けを借りて、あらゆる種類の NPE / アクセス違反のバグを静的に完全に除外できるためです。しかし、実際に使うのは面倒です。最も基本的な使用例の 1 つを考えてみましょう。

ここで差し迫った落とし穴は、そのような をインスタンス化することさえSafeSeq簡単ではないということです。試み

a が単に nil ではないことcannot prove 'newSeq(100)' is not nilが予想されるため、これは驚くべきことです。newSeq回避策は、次のようなヘルパーを使用するようです:

を使って何かをしようとすると、次の問題が発生しますSafeSeq。たとえば、a をマップしたときSafeSeqに結果が再び nil にならないことが予想される場合があります。ただし、次のようなものも失敗します。

一般的な問題は、戻り値の型が通常になるとすぐにseq、コンパイラがプロパティを忘れてしまい、not nilそれを証明できなくなることです。

私のアイデアは、実際に証明できる小さな(おそらく醜い)ヘルパーメソッドを導入することでしたnot nil

ただし、コンパイラはnot nilここでも証明できません。私の質問は次のとおりです。

  • このような場合、コンパイラが推論するのをどのように支援すればよいnot nilですか?

  • この機能の長期的な目標は何ですか?つまり、推論not nilをより強力にする計画はありますか? マニュアルの問題点は、proveNotNil安全でない可能性があり、コンパイラが証明するという考えに反することです。ただし、proveNotNil非常にまれなケースでのみ必要な場合は、それほど害はありません。

注: 私はそのseq試みがnil不可知論的であることを知っています。つまり、その場合でもすべてが正常に機能nilします。ただし、これはNim 内にのみ適用されます。C コードとインターフェースする場合、nil-hiding-principle はバグの危険な原因になります。これは、nilシーケンスが Nim 側でのみ無害であるためです...

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

nim-lang - エラー: 式にアドレスがありません

エラー:

コンパイラは何を望んでいますか?