問題タブ [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.
functional-programming - 実数とのパターンマッチング(標準ML)
これを行う:
エラーが発生しますが、0.0を変更するとエラーはなくなります。しかし、私は0.0に一致する必要があり、それを達成できるかどうか、そしてどのように達成できるのか疑問に思っています。
java - 別の AST ツリーを指定して Java で AST ツリーを作成する
現在、SML で記述した AST ツリーを Java で表現する作業を行っているため、いつでも Java でトラバースできます。
特定のノードの子を表す配列リスト (リスト) とともに、表現したいデータを持つ Node クラスを Java で作成するだけでよいのでしょうか? 次に、ルート ノードのみを持つ ASTTree クラスを作成します。
もっと凝ったものを検討する必要があるかどうかはわかりません。
ご質問やコメントをお待ちしております。
-ポール
compiler-construction - Linux用の読み取り-評価-印刷ループを備えた高速標準MLコンパイラまたはバイトコードインタプリタ?
私が教えるクラスで使用するために、標準 ML 用の高速なコンパイラまたはバイトコード インタープリタを探しています。 高速なコンパイル時間を探しています。妥当な実行時間であれば問題ありません。コンパイル モデルが単純明快であればボーナスです。クラスの学生も MLton を使用して優れたバイナリを生成しますが、MLton はコンパイルが遅く、学生が対話できるものが必要な場合があります。
これが私がすでに知っていることです:
ニュージャージーの標準 ML には対話型の read-eval-print-loop がありますが、そのコンパイル規則は少し奇妙で、少し遅いです。それでも最有力候補かもしれません。
Moscow ML はかつては理想的でしたが、2004 Standard Basis Libraryではまだ更新されていません。最も残念なことは、Moscow ML には、他の多くの優れた特性に加えて、対話型のヘルプ システムも備わっているためです。ただし、すべてのオンライン ドキュメントに記載されている内容とは異なるライブラリを使用するコンパイラを学生に強制することはできません。
Poly/ML は、オンラインのドキュメントを見てコンパイルする方法がわからないことを除いて、法案にうまく適合する可能性があります。それでいいのかもしれません。
現時点では、SML/NJ または Poly/ML が最善の妥協案であるかのように見えます。私が Standard ML で本格的な作業を行ってから何年も経ちました。他のコンパイラに関する情報や、あなたの経験から、対話が最も速く、使い方を覚えるのが最も簡単な代替コンパイラについての情報を歓迎します。
functional-programming - MLの型式のクエリ
全て、
ML式に変換する必要のある型式は次のとおりです。
これが2つの引数を取るカリー化スタイルの式であることがわかりました。1番目の引数=型intおよび2番目の引数=前のint値を2回受け取り、任意の型のリストを返す関数
int
を取り、戻るような関数を理解するのに苦労してい'a list
ます。
私はMLを初めて使用するため、これは他の人にとっては些細なことかもしれませんが、明らかに私ではありません。
どんな助けでも大歓迎です。
functional-programming - ML での型式の導出
全て、
以下の関数の型式を ML で導出したいと考えています。
これで、同じように入力すると型式が生成されることがわかりました。しかし、私はこれらの値を手で導き出したいと思っています。
また、型式を導出する際の一般的な手順についても言及してください。
data-structures - 重み付けされた左翼ヒープ: マージのトップダウン バージョンの利点?
私は岡崎の Purely Functional Data Structures を独学しており、現在演習 3.4に取り組んでおり、重みに偏った左翼ヒープについて推論し、実装するよう求めています。これは私の基本的な実装です:
ここで、3.4 (c) & (d) で、次のように尋ねます。
現在、
merge
は 2 つのパスで動作します。 への呼び出しで構成されるトップダウン パスmerge
と、ヘルパー関数 への呼び出しで構成されるボトムアップ パスmakeT
です。merge
単一のトップダウン パスで動作するように変更します。merge
のトップダウン バージョンには、怠惰な環境でどのような利点がありますか? 並行環境では?
merge
インライン化するだけで関数を変更しましたmakeT
が、利点が見られないため、演習のこれらの部分の精神を把握していないと思います。私は何が欠けていますか?
遅延評価に関して、1 つのポイントを把握できたと思います。サイズの計算に再帰マージを使用しない場合、子が必要になるまで再帰呼び出しを評価する必要はありません。
それだけですか?ただし、同時実行性についてはわかりません。
function - 標準 ML: さまざまな型を返す
別の関数に渡された関数に基づいて、別の値を返す必要があります。
したがって、与えられた:fun inc x = x + 1;
と:fun double [] = [] | double (h::t) = 2*h::double (t);
私が取り組んでいる関数を呼び出すことができるはずです。
呼び出し例 (作成している関数の名前は test です):
test (inc, 5);
- そして、それは6を返します
-また-
test (double, [1,2,3,4]);
- そしてそれは[2,4,6,8]を返します
関数が額面どおりにこれを行うことができないことは知っていますが、これは抽象化のレイヤーを通じて可能ですか?
sml - SML 変数の型を確認するには?
変数の型をチェック/テストする方法はありますか?
私はこのようにそれを使用したい:
sml - SMLは、charリストにある間にintを返す方法を教えてください。
処理された各文字をint値に戻す方法を理解するのに少し苦労しています。
関数は次のように機能する必要があります:val caesar = fn:int * int-> int
したがって、k=2466およびn=2の場合、出力は4688になります。
コードがあまり奇妙ではないことを願っています(私はSML初心者です)。
sml - SML 2つのリストを差し引いて、製品を比較するにはどうすればよいですか?
2つのリストを差し引いて、比較した製品を返そうとしています。
したがって、リストa = [2,3,2] b = [1,1,1]の場合、ab = [1,2,1]となり、返される製品(c)は1になります。
モジュロ(mod)10は、2つの減算された数値が奇数の結果をもたらす場合、たとえば2-8 =〜6 mod 10=4の場合です。
List.mapは、intリストではなくint値を期待しているため、減算を実行できません(少なくとも、コーディングした方法ではありません:()。
私も比較については空白です。