[解決済み] Rank2Typesの目的は何ですか?
2022-09-05 19:29:45
質問
私はHaskellにあまり精通していないので、これは非常に簡単な質問かもしれません。
どのような言語制限を Rank2Types はどのような言語的制限を解決するのでしょうか?Haskellの関数はすでに多相引数をサポートしていないのですか?
どのように解決するのですか?
Haskellの関数はすでに多相引数をサポートしていないのですか?
ありますが、ランク1のみです。つまり、この拡張がなくても異なる型の引数を取る関数は書けますが、同じ呼び出しで異なる型の引数を使用する関数は書けません。
例えば以下の関数は、この拡張なしでは型付けできません。
g
の定義で異なる引数の型が使われているからです。
f
:
f g = g 1 + g "lala"
多相関数を他の関数の引数として渡すことは完全に可能であることに注意してください。つまり、次のようなものです。
map id ["a","b","c"]
は完全に合法です。しかし、その関数はそれを単相としてしか使うことができません。この例では
map
は
id
という型であるかのように
String -> String
. そしてもちろん,与えられた型の単純な単項式関数を
id
. rank2typesがなければ,関数がその引数が多相関数でなければならないことを要求する方法がなく,したがって,それを多相関数として使う方法もありません.
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] C++のPOD型とは何ですか?
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Haskellの入門編
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]
-
[解決済み] Emacs Interactive-Haskell repl は、cabal と working directory のいずれかが project directory に設定されると無応答になる。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 機能における非網羅的なパターン【重複あり
-
[解決済み] Haskell Preludeの'const'は何のためにあるのか?
-
[解決済み] haskellにおけるdrop関数 - リスト内包を用いた実装
-
[解決済み] 解釈の仕方 (Eq a)
-
[解決済み] モナドはエンドファンクタのカテゴリではただのモノイドですが、何か問題でも?
-
[解決済み] 読んで学ぶべき良いHaskellのソース [終了しました]。
-
[解決済み] RustのtraitとHaskellのtypeclassの違いは何ですか?
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]
-
[解決済み] Emacs Interactive-Haskell repl は、cabal と working directory のいずれかが project directory に設定されると無応答になる。
-
[解決済み] Haskellの初心者向けガイド?[終了しました]