問題タブ [monomorphism]
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.
subgraph - サブグラフ同型とサブグラフ単型の違いは何ですか?
私が取り組んできたプロジェクトの 1 つで、同型対単型の話題が出てきました。
ちょっとした背景: 私はグラフ理論の専門家ではなく、正式なトレーニングを受けていません。しかし、このトピックは化学において非常に重要です。化学者は、使用する構造検索システムで特定の種類のサブグラフ マッチングが行われることを期待しています。
ターゲット グラフ A に n 個のノードと m 個のエッジがある場合、化学者はクエリ グラフ B に n 個のノードと m-1 個のエッジがあるサブグラフの一致を受け入れます。唯一の要件は、B のすべてのエッジが A に存在する必要があることです。たとえば、6 つのノードの線形チェーンは、6 つのノードのサイクルと一致する必要があります。
この種のマッチング同形性または単形性はありますか? たぶん、まったく別の何か?
f# - F# 関数が "val FunctionName: int -> int" のシグネチャを返すのはなぜですか?
F# Wikibook on High Order Functionsのいくつかの例に従っていました。
タイトルの下の 2 番目のコード スニペット、Composition Functionには次のコード スニペットがあります。
私が理解に問題を抱えているのは
F# インタラクティブ シェル (fsi.exe) で単独で実行すると、次のシグネチャが得られます。
しかし、コード スニペット全体を実行するとxSquared
、以下が返されます。
なぜxSquared
テイクfloat
とリターンはfloat
?
haskell - 基本的なHaskellの単相性/多型性の質問(HList)
私はHaskellとStackoverflowの初心者です。これが私の最初の、そしておそらく非常に基本的なHaskellの質問です。
これは、r1とr2がrでポリモーフィックである場合でも、rPairが型シグネチャに従ってr型を整列させることは理にかなっています。この「アライメント」の専門用語はありますか?
rConsは、渡されたRがrで単相であり、必要に応じてリストのrタイプを制約する場合にうまく機能します。しかし、それらがrで多形である場合、rPairのように整列せず、エラーが発生します(上記のrcを定義します)。
なぜそうなるのかについては漠然とした直感がありますが、私の質問は2つの部分に分かれています。誰かがその現象を明確に説明できますか?次のようにrConsを作成するにはどうすればよいですか?
ありがとう、_c
c++ - c++モノモーフィッククラスとは何ですか?これは例ですか?
次のクラスがモノモーフィックかどうか教えてください。
それを単形にするものは何ですか?モノモーフィックとは実際にはどういう意味ですか?
編集:
クラス Boo のコンテキストで:
haskell - タイプアノテーションなしのletバインディングでの単相性の回避
型を使用してインスタンスを明確にするコードがいくつかあり(実際のコードは型タグにGHC.TypeLitsシングルトンを使用していますが、それは密接な関係はないと思います)、テキストレベルの重複を避けるためにletバインディングを使用したいと思います; 残念ながら、これは結果を単形化します。
以下は問題の例です。
上記のコードはコンパイルされません(ただし、もちろん、多形であるように注釈を入力すると、すべてが正常に機能します)、と一致しquux
なかったと正しく文句を言います。タイプアノテーションを付けずに、また各使用サイトで繰り返すことなく、コンパイルを成功させる方法はありますか?Int
Char
bar undefined
type-inference - アルゴリズム W と単形型強制
おもちゃの言語用に独自の型推論アルゴリズムを書こうとしていますが、壁にぶつかっています。アルゴリズム W は、過度に一般的な型にしか使用できないと思います。
式は次のとおりです。
型付け規則は簡単です。抽象化と適用のために型変数を使用します。考えられるすべてのタイプを次に示します。
ご想像のとおりELit : TMono
、 、より具体的にはEConc :: TMono → TMono → TMono
.
私の問題は、実際の型推論を行うことにあります。式構造を下に再帰する場合、 an を見るときの一般的な手法EAbs
は、新しくバインドされた変数を表す新しい型変数を生成し、コンテキスト内の入力の出現を(String : TVar fresh)
判断に置き換えてから、式を下に続けることです。
今、私EConc
がヒットしたとき、私は同じアプローチを取ることを考えていました -サブ式の自由式変数TMon
をコンテキスト内で置き換え、次にサブ式を型推論し、2 つの結果の最も一般的な単一化子を戻る主な代替。ただし、 のような式でこれを試すとEAbs "x" $ EConc ELit (EVar "x")
、間違った が得られTFun (TVar "fresh") TMon
ます。
polymorphism - デフォルトのケースを使用したパターン マッチングの単相型
まあ、実際にはそれを解決したので問題ではありませんが、あまりにも気になります:
これを書きましょう:
test.ml
コンパイルすると、次のようになります。
ocamlc -o test test.ml ファイル「test.ml」、6 行目、11 ~ 62 文字目:
警告 8: このパターン マッチングは網羅的ではありません。一致しない値の例を次に示します。 Badd
コンパイルは 9 月 13 日火曜日 13:24:50 に終了しました
Badd
これは正常です。ケースを追加するのを忘れていました。
したがって、私は警告が嫌いなので、コードを次のように変更します。
そして、私はコンパイルします(そして、あなたが理解できるように、ここに不穏な部分があります;-))、私は得ます:
ocamlc -o test test.ml ファイル「test.ml」、13 行目、31 ~ 33 文字目:
エラー: この式は char 型ですが、int 型の式が必要でした
9 月 13 日火曜日 13:26:48 にコード 2 でコンパイルが異常終了しました
さて、何?の型op
が notであること'a -> 'a -> bool
がわかった'_a -> '_a -> bool
ので、コードを変更しました。なぜなら、OCaml では非値の多相型が許可されておらず、部分適用は値ではないことを思い出したからです。となりました:
そして私がコンパイルした後:
ocamlc -o テスト test.ml
コンパイルは 9 月 13 日火曜日 13:29:48 に終了しました
私は書くことができた:
そしてそれも完璧にコンパイルされます (しかし、えーと、Obj.magic は低俗な OCaml プログラマーのあだ名にすぎませんよね?)。
それで、ここに私の質問があります。意味的にまったく同じことを書いたときにコンパイラがその動作を変更するのはなぜですか? (OCaml のいくつかのバージョン (3.12.1、4.01.0、4.02.3、4.03.0) でテストしました)。