[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
486(2): デフォルトの名無しさん [sage] 2011/11/12(土) 17:11:25.72 AAS
>>484484(1): デフォルトの名無しさん [sage] 2011/11/12(土) 17:07:16.80 AAS
>>480
SMLなら、open uri と宣言すれば、Rubyと同じように修飾を省略できるよ
Haskellはできないの?
できるけど、名前が衝突しない場合に限る。これはSMLも同じだよな?
Haskellで短かい名前を多用すると、けっこう頻繁に衝突して、けっきょく修飾インポートするはめになる
Rubyだとメソッド名はグローバルじゃないので衝突を気にする必要すらない
487(3): デフォルトの名無しさん [sage] 2011/11/12(土) 17:16:42.29 AAS
>>486
>これはSMLも同じだよな?
いや、ゼンゼン(理由は下記を参照)
>Haskellで短かい名前を多用すると、けっこう頻繁に衝突して、
ナゼこんなことが起きるの?
SMLなら名前空間は(Rubyと同じように)階層化されているから、
適切にモジュール設計していれば、衝突なんて全く気にならないんだけど....
もしかしてHaskellの(モジュールに関する)名前空間というのは
フラット(平坦)なの?
499(1): [―{}@{}@{}-] デフォルトの名無しさん [sage] 2011/11/12(土) 18:22:34.43 AAS
>>498498(1): デフォルトの名無しさん [sage] 2011/11/12(土) 18:15:51.80 AAS
>>496
>Rubyのインスタンスメソッドについてはそれができるんだよ。
Rubyのインスタンスメソッドもレシーバで修飾しなければ区別できないよ。
たとえば
c = A::B::C.new; e = A::D::E.new
という文脈の下で、レシーバで修飾された
c.f および e.f
という式は正しく評価できるけど、単なる
f
ではRuby処理形は式を評価できない。(当たり前の話だよね?)
もちろん。でもHaskellにはその能力がない
Rubyでuri.schemeと書くときにメソッド名schemeが他と衝突するのを心配する必要はないけど、
Haskellで(scheme uri)と書くならそうはいかない
これを指して>>486で「けっこう頻繁に衝突」と言った
>>487で否定されたのでSMLにもRubyみたいなレシーバ依存の名前lookupがあるのかと思ったけど、
そういう訳でもないってことで良いかな
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.039s