[解決済み] なぜ依存型でないのか?
質問
Haskellは徐々に依存型言語になりつつある、という意見をいくつかのソースで目にしました。その意味するところは、より多くの言語拡張により、Haskellはその一般的な方向へ向かっているが、まだそこに到達していないということです。
知りたいことは基本的に2つあります。1つ目は、簡単に言うと、「依存型言語であること」とは、実際にはどのようなことなのか、ということです。 意味 ? (できれば、あまり専門的なことは抜きにして)。
2つ目の質問は...欠点は何でしょうか?つまり、人々は私たちがその方向に向かっていることを知っているのですから、何か利点があるはずです。しかし、まだそこに到達していないのですから、人々がその道を突き進むのを阻む何らかの欠点があるはずです。問題は、複雑さが急激に増すことだという印象があります。しかし、従属型付けが何であるかをよく理解していないため、確かなことはわかりません。
私の場合 する 依存型プログラミング言語について読み始めると、いつも文章がまったく理解できないんです......。おそらく、それが問題なのでしょう。(?)
どのように解決するのか?
依存型付けは実際には値と型のレベルを統一するだけなので,型に値をパラメタライズすることができ(Haskellでは型クラスとパラメトリック多相性ですでに可能),値に型をパラメタライズできる(厳密に言えば,Haskellではまだ可能ではない,ただし
DataKinds
は非常に近くなっています)。
編集する どうやら、ここから先は、私の勘違いだったようです(@pigworkerさんのコメント参照)。 この続きは、私が食べさせられてきた神話の記録として保存しておきます :P
私が聞いたところによると、完全な依存型付けに移行することの問題は、Haskellを消去された型で効率的な機械語にコンパイルできるようにしている、型レベルと値レベルの間の位相制約を壊してしまうことです。 現在の技術レベルでは、依存型付けされた言語が しなければならない ある時点で(すぐに、あるいは依存型バイトコードなどにコンパイルされた後に)インタープリタを経由する。
これは必ずしも根本的な制約ではありませんが、この点で有望と思われる研究であっても、まだGHCに取り込まれていないものは、個人的には知りません。 もし他にもっと知っている人がいれば、訂正していただけると幸いです。
関連
-
[解決済み] Haskell - Ord aの型は何を意味するのでしょうか?
-
[解決済み] 機能における非網羅的なパターン【重複あり
-
[解決済み] Hindley-Milnerのどの部分が理解できないのでしょうか?
-
[解決済み】Weak Head Normal Formとは何ですか?
-
[解決済み] RustのtraitとHaskellのtypeclassの違いは何ですか?
-
[解決済み] Haskellで副作用がモナドとしてモデル化されているのはなぜですか?
-
[解決済み] GHCはなぜこんなに大きいのか/大きいのか?
-
[解決済み] TLSサーバーを実装するためのHsOpenSSL APIの適切な使用法
-
[解決済み] ハスケル Where vs. Let
-
[解決済み] Haskellの関数合成(.)と関数応用($)イディオム:正しい使い方
最新
-
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でリストを逆順にする
-
[解決済み] 機能における非網羅的なパターン【重複あり
-
[解決済み] Haskell における `mod` と `rem` の違い
-
[解決済み] GHCはなぜこんなに大きいのか/大きいのか?
-
[解決済み] Haskellのマルチコアプログラミングはどうなっているのか?
-
[解決済み] CabalとStackの違いは何ですか?
-
[解決済み] リーダーモナドの目的は何ですか?
-
[解決済み] ハスケル Where vs. Let
-
[解決済み] Haskellの関数合成(.)と関数応用($)イディオム:正しい使い方
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]