- 1 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 04:43:27.12 ID:mNwXvrXv.net]
- いざ、語ろうぞ。
スレタイ超過のため、一部省略。 Go, Erlang, Kotlin, etcもウェルカム。 Haskellは協議により次世代失格になりました 前スレ 次世代言語議論スレ[Go Rust Haskell Scala]第3世代 echo.2ch.net/test/read.cgi/tech/1488608741/
- 955 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 11:26:50.36 ID:UQSg1EaA.net]
- 誤解の生じない自然言語が望まれる
- 956 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 11:27:26.76 ID:HdFpeWhQ.net]
- ところで質問なんですが
Haskellの型クラスは裏でメソッド辞書を渡して実行時ディスパッチをするって読んだんですがこの理解で合ってます? https://people.csail.mit.edu/dnj/teaching/6898/papers/wadler88.pdf それともコールする関数の決定も何らかの最適化機構でコンパイル時にすませてしまうのでしょうか
- 957 名前:デフォルトの名無しさん [2017/06/01(木) 11:48:38.71 ID:Bx3/ibOs.net]
- >>956
C++のコンパイル時ダックタイピングと同じ 実行時ディスパッチではない
- 958 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:35:37.68 ID:bubu+W4z.net]
- >>956
後者で合ってる GHCの場合は最適化無しでランタイムにdictionary lookupするコードを生成 最適化でコンパイル時解決になる 指定なしなら通常は最適化される
- 959 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:56:45.70 ID:sszEh+oH.net]
- >>958
なるほど If the type of a function contains a class, then this is translated into a dictionary that is passed at runtime. The translation simply assures that the appropriate dictionaries passed at run-time; ... One drawback of our translation method is that it introduces new parameters to be passed at runtime, ... 等々しつこく書いてあったのでてっきり今もランタイムかと。 その後コンパイル時に完結できるようになっていたんですね。ありがとうございます。
- 960 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 14:21:39.82 ID:JVCP5RQG.net]
- >>959
念のため言うが、飽くまで一般の話だよ 上での言及のように例外なく、必ずcompile timeになるかどうかはわからない 普通に考えれば、呼出側だけでなく、モジュールに何か細工が必要だろうし
- 961 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 14:30:58.85 ID:Ty12p446.net]
- >>959
調べてみたが、少なくともHaskell 2010ではCompile timeが保証されているようだ というか88年の文献は、いくらなんでも古すぎないか?
- 962 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 19:59:34.59 ID:vNOzF29i.net]
- 他者と誤解なく分かりあえるようになるための共通言語を開発しよう
もちろん、人と人だけでなく、人とコンピュータも分かりあえる共通言語だ それこそが次世代言語だ
- 963 名前:あ mailto:sage [2017/06/01(木) 20:05:18.45 ID:23mplHvr.net]
- >>952
ネット越しだからやるべきかとは。。 >>961 ヨコからだけどありがとう。参考になるわ。見てくる。 >>962 エスペラントを一歩すすめる時代か。
- 964 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 20:18:08.98 ID:Dnfnpswj.net]
- >>963
やった結果がお前さんの現状なんだよな。
- 965 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 20:42:26.57 ID:sszEh+oH.net]
- >>961
Haskell 2010 でもまだランタイムに依存しているみたいだけど違う? https://stackoverflow.com/questions/28169119/is-the-dispatch-of-a-haskell-typeclass-dynamic#comment44713002_28170590
- 966 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 22:45:39.05 ID:14pfKSNM.net]
- あらゆるモダン言語で見るようになったmapとかflatmapっていうのはどこから生まれたものなの?
- 967 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 22:50:28.99 ID:W7qZGWEB.net]
- LISPじゃね
- 968 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:08:33.62 ID:lDZ3L3oh.net]
- >>965
ちょっと話が見えないんだが、もしかして回答してほしいのは >https://people.csail.mit.edu/dnj/teaching/6898/papers/wadler88.pdf に限定した話ではないのか? 保証については、再帰がない場合の話で、その参照先は>>959とは状況違う その場合>>958 + >>960という回答になる
- 969 名前:デフォルトの名無しさん [2017/06/02(金) 02:50:18.61 ID:bQ6pitWP.net]
- 再帰があっても深さを制限すればspecializeできるんじゃね
制限を超えたらエラーにするか、あるいはspecializeをやめたら無限に再帰できるか?
- 970 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 07:14:02.17 ID:vc1fSB5M.net]
- >>968
あ、いえ、すみません >>958+960 で理解の確認はできています ありがとうございます ただ一方で >>905 >>957 >>961 みたいな主張もあるようなので 最新の実装では型クラスを取り巻く状況もかなり違ってきているのかなと
- 971 名前:デフォルトの名無しさん [2017/06/03(土) 09:45:16.91 ID:1Cu2c1ce.net]
- これ互換性にあまり影響のない実装の変更だよね
それより互換性が完全になくなった変更を批判する方が建設的
|

|