問題タブ [ml]
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.
ml - StandardML 97 定義
実際の標準 ML 仕様はThe Definition of Standard ML (Revised) であり、印刷版のみ MITPress で入手できます。
電子形式 (pdf、ps、ie) で入手できますか?
sml - ML プログラミング言語で複数のタイプを持つツリーを定義する方法
さて、私は次のことをするように求められます:
2 つの異なるタイプ ('a,'b) abtree を含むことができるバイナリ ツリーを定義するには、次の要件があります。
- 内側の頂点 (葉ではない) は、タイプ 'a または 'b である必要があり、葉には値がありません。
ツリー内のすべてのパスでは、すべての 'a 値が 'b 値の前に表示される必要があります: パスの例:
/li>
また、上記のような別のツリーを定義する必要がありますが、今では 'c も取得しており、2 番目の要件では、すべてのパスについて I 'a 値が 'b 値の前に表示され、すべての 'b 値'c 値の前に表示されます。
まず、二分木を定義して複数の型を持つようにする方法がわかりません。つまり、最も単純な二分木は次のとおりです。
また、これらの要件を満たすようにツリーを定義する方法についても説明します。
どんな助けでも大歓迎です。
ありがとう。
はい、ありがとございます。つまり、次のような意味です。
そして、それは私が上で述べたようにそれが3つのタイプのツリーである場合に私がしたことです:
私は正しいですか?
また、リーフの要件とはどういう意味ですか? 葉には価値がないと言っているのですか?
sml - RPARENEQALOPおよびSML/MLでのバインドされていない変数とコンストラクターのエラー
2つのCNF論理句a、bがあり、distrib関数はa | b(a OR b)のCNF形式を返す必要があると述べました。
私が持っているルールの置き換えは次のとおりです。
このように定義された小道具:
関数:
基本オプションと置換ルールをすべて調べただけなのに、関数自体が正しいかどうかはわかりませんが、今のところ、distrib1関数の後にEQALOPが表示され、コンストラクターエラーがdistrib関数に表示されると、上記のエラーが発生します。 。
なぜこれらのエラーが発生するのですか?よくわかりませんが、ローカルではなくletを使用することになっているかもしれませんが、どうすればlet構造に変換できますか?
ありがとう。
sml - MLのSeuqences(有限および無限)
わかった、
シーケンスの次の定義があります:
次の関数を実装する必要があります。
この関数は、trueまたはfalse、n(整数)およびシーケンスを返す述語関数を取得します。
機能:
- n <= 0の場合、同じシーケンスを返します。
- それ以外の場合は、最初のn個の要素が元のseqの最初のn個の要素であり、述語がそれらに対してtrueを返し、残りは同じになるというseqを返します。
たとえば、述語が(x mod 2)で、seqが1,2,3,4,5 ...であり、nが3である場合、新しいseqは2,4,6,7,8、..です。
さらに、別の2つのオプションを確認する必要があります。
2.1)seqが有限であり、述語がtrueを返す要素がn未満の場合、新しいseqには、述語がtrueを返す要素のみが含まれます。
2.2)seqが無限であり、述語がtrueを返す要素がn未満の場合、新しいseqには、述語がtrueを返すすべての要素が含まれ、次の要素を取得しようとすると、無限ループに入ります。
私の現在のコードは、2.1と2.2を考慮せずに今のところ論理的に計画されています(エラーが発生し、理由を見つけることができますが?)
構文エラーまたは大幅な変更..わかりませんか?
(また、2.1および2.2の場合、(Nilおよびn> 0)を取得した場合は、Nilを返すかどうかを確認する必要がありますか?)
助けてくれてありがとう。
sml - ml-lexを使用して字句アナライザを構築する
lexer
標準の入力ストリームに関連付けられた新しいインスタンスを作成する必要があります。
ただし、入力すると
理解できないエラーが発生します:
(makeLexer
私のソースコードにある関数名です)
lex - ml-lex での yyleng 関数の使用
ml-lex の yyleng 関数の使用を手伝ってくれる人もいます。アナライザーで最近一致したテキストの長さを表示するにはどうすればよいですか
sml - firstElement::Middle::LastElement 正規表現
最後の要素をすぐに取得できるように入力を確認したい場合、実行する正規表現の形式はありますか:
fun someFunction (firstElement::MiddleOfList::LastElement)
だから私は最後の要素を得ることができます
sml - SMLNJ で typedef を展開できますか?
そこで、標準 ML でいくつかのコードを作成し、それを smlnj でコンパイルしようとしました。次のエラーが発生しました。
さて、これは、タイプの大まかな検査に基づいて、タイプが一致する必要があるように見えます。コードのバグではなく、一般的な解決策が必要なので、それらについては説明しません。
両方の型を基本データ型に展開して、それらの違いを理解することはできますか? これらすべての typedef があちこちに浮かんでいると、物事が混乱し、すべての定義について .sml ファイルを掘り下げて紙に展開を書くのは面倒な解決策のように思えます。
私は次のようなことを言いたいです:
そして、どのような式が有効なファンドデックを生成するのかを理解してください。
concurrency - 標準 ML / CML 間違った演算子 - オペランド エラー
Standard ML の CML 拡張を使用して並行リストを実装しようとしていますが、おそらく Standard ML の初心者であることに関係しているエラーが発生しています。入力チャネルと出力チャネルを持つ clist を実装し、リストの状態をループに格納します。ただし、私のコードはコンパイルされず、以下のエラーが発生します
これは署名ファイルです
私が得ているエラー:
sml - 次の小さなプログラムで構文エラーを取り除く
構文エラーは