問題タブ [sml]

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 に答える
1235 参照

sml - 入出力操作-ML

私はMLを学んでいます。MLの基本的な入出力機能を手伝ってくれる人はいますか?コンソールから入力を読み取り、それを変数に格納して、MLプログラムで使用したいだけです。

助けてください。あなたがこれのいくつかの例に私を向けることができれば、それもまた素晴らしいでしょう!!! ありがとうございました。

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

sml - リストを反復するにはどうすればよいですか?

SML で基本的なリスト操作を実行しようとしています。

リストの各要素を抽出し、その要素に文字列を追加して、リストに追加し直します。例:

SML のリスト内の各要素を反復処理するにはどうすればよいですか? を使用して文字列を追加し^たり、リストを連結したりできます@が、リストから各要素を抽出するにはどうすればよいですか?

また、マップや配列などを使用してこれらのリストの値を保存し、SML のさまざまな関数に渡すことはできますか?

マップに関する漠然とした情報を見つけることができただけで、それをどのように使用できるかについての明確な情報は見つかりませんでした.

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

sockets - プロセス間通信にソケットを使用する際の制限は何ですか?

Firefox で標準 ML (SML) をクライアント側プログラミング言語として使用できるようにする Firefox 拡張機能を作成しています。仕組みは次のとおりです。

  1. 拡張機能は、PolyML プロセス (最上位の対話型シェルを備えた SML コンパイラ) を起動します。
  2. 次に、拡張機能と PolyML プロセスの間でソケット通信が確立されます。
  3. SML コードは Web ページから読み取られ、評価のためにソケット経由で PolyML プロセスに送信されます。
  4. そのコードは、DOM を操作するために、私が提供するライブラリを使用する場合があります。

DOM ライブラリの実装方法は次のとおりです。

  1. 誰かが SML 関数 DOM.getElementById を実行するとします。
  2. このリクエストはソケット経由で拡張機能に転送され、そこで拡張機能はページ上で JavaScript 関数 getElementById を実行し、結果をソケット経由で PolyML プロセスに送り返します。

私の質問は、理論的には、ソケット通信に関しては、パフォーマンスの面でどのような制限があると予想する必要があるかということです。

非常に大まかなプロファイリングを行ったところ、拡張機能と PolyML の間でこのインターフェイスを使用すると、約2500 メッセージ/秒、平均サイズ70 バイト/メッセージを送信できるようです。

これをより具体的に説明すると、Canvas 要素を使用してブラウザーでいくつかのアニメーションを描画したいとします。20 fps を達成したい場合は、すべてのフレームを 0.05 秒で描画する必要があることを意味します。つまり、フレームごとに約 125 のメッセージしか送信できません。これらのメッセージは、JavaScript 関数呼び出しに対応しています。たとえば、以下のコードはパスを描画し、ソケット通信の 9 つのメッセージに対応する 9 つの JavaScript 関数呼び出しを行っています。

JavaScript は、明らかにパフォーマンスがはるかに優れています。フレームを描画するために、この 0.05 秒で数千 (数百) 回の Canvas/DOM 関数呼び出しを行うことができると思います。

それで、私の質問は、ソケット通信を使用して非常に高速なメッセージ交換を行った経験があるかということです。毎秒 2500 個の小さなメッセージ (この場合、毎秒 150 キロバイトに相当) が正しいように見えるのか、それとも非常に間違ったことをしている可能性があるのか​​を知りたいです。

たとえば、Firefox でのソケットの実装 (特に、JavaScript インターフェースhttps://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIServerSocket経由での使用) は、この種の迅速な対話にはあまり適していないのではないかという疑いがあります。たとえば、ソケットからの読み取りは、イベント ループ メカニズムを介して行われます。つまり、私は Firefox に依存しています。着信ソケット メッセージの可用性について通知するため、メッセージの送信と受信の間に大きな遅延 (250 ミリ秒など) が発生することがあります (ただし、これは、Firefox が忙しくしているときにのみ発生するようです)。他のこと、そして私はソケット通信の..理論上の..制限にもっと興味があります)

アイデア、考え、欠陥はありますか? JavaScript や C への外部関数インターフェイス (JavaScript と PolyML の両方) からではなく、C++ XPCOM コンポーネントから私の通信を実装するパイプなど、他の IPC メカニズムを使用する方が良いと思いますか?

(興味のある方は、プロジェクトはhttps://assembla.com/wiki/show/polymlextにあります)

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

functional-programming - 網羅的なパターン

私は ML を学んでいます。誰かが網羅的なパターンの意味を説明できますか?

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

sml - NJのSMLのエラー

みなさん、こんにちは。私はこのコードスニペットを持っています。

関数fと整数nを受け取り、次のような関数のリストを生成するプログラムを作成する必要があります[f1, f2, ... fn] <- fn is the composition of the function n timesが、エラーが発生するたびに次のようになります。

誰か助けてくれませんか、よろしくお願いします

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

sml - NJ の ML でネストされたローカル宣言

こんにちは皆さん、私はこのコードのスニペットを持っています:

関数 f と整数 n を受け取り、[f1、f2、... fn] などの関数のリストを生成するプログラムを作成する必要があります <- fn は関数 n 回の構成ですが、エラーを受け取るたびに:

ネストされたローカル宣言が間違っているようです。誰かが理由を説明してもらえますか?

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

algorithm - NJのSMLのグラフ

ML を使用していくつかの関数を記述する必要があります。この関数は、有向グラフ [(1,2),(1,3),(3,2)] のエッジのリストを受け取ります。これは、1から2への有向エッジを意味し、 1 から 3 まで...、そして 2 つの頂点も受け取ります。最初の頂点から 2 番目の頂点までのすべての可能な方法と、可能なパスのリストを見つける必要があります。たとえば、頂点1, 2の場合、リストを表示する必要があります [[ 1,2]、[1,3,2]]、頂点に関するデータを保存できない場合、どうすればMLを実行できますか。アイデアを事前に感謝します。

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

sml - 警告:polyEqualを呼び出す

誰か説明してもらえますか、この警告はどういう意味ですか?

また、次のステートメントに「a」が含まれているのはなぜですか。

これは私の機能です:

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

sml - SML リストの等価奇数

私はこのビットのコードを持っています:

型シグネチャ付き

xs = []かなり単純に見えますが、比較のために、等値型と等値型のリストを引数として機能する関数を取ります。ただし、何らかの理由で(op +, [2.3, 2.7, 4.0])、SML/NJ 実数が等値型でない場合、 などの入力で機能します。この魔法が発生する理由を明らかにするのを手伝ってくれる人はいますか?

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

sml - 新しいリストのデータ型

ML で新しいデータ型を定義するにはどうすればよいですか。newList を想定して、要素 'a (int、real など) のリスト、ネストされたリストで構成できるようにします。たとえば、私の型 'a が int の場合、値は: [1]、[1,[4]]、[1,[5]、[[5]]] など。

EDITED 申し訳ありませんが、例に 1 がありません。int のリストが異なります。削除しました