modular explicits話
ocamler多いはず
OCamlやFP経験はともかく少なくともfp興味勢で占められている
jsとかもやってると嬉しい
思いつきtopicとしては
module dependent functionsってのがOCamlに入った
OCamlはmodular implicitsが入ると型クラス相当(アドホック多相)のはず でも型を List.t に定義するみたいな慣習がある
メソッド記法ってメソッド名の探索空間がclassとかオブジェクトにで補完がナイスみたいな話あったな Nimはどうだっけ
型とモジュールを結びつける言語機能って色々あるけど、OCamlは特に強く分離しているタイプだよね〜
流れ
プログラミング言語一般でmoduleとは
modular explicitsとは
moduleの上の関数はあったが値の関数がmoduleを取れるようになった
fp-tsが型クラスを模倣する手段って似てるぜ
モジュエクもusecaseが型クラスっぽいよね
ところで俺はF#を知ってほしいという生地が好きで〜 クラスは型と密結合したモジュールだって言ってた
OCamlは型と密結合したモジュールがない
多くのOOP言語はクラスが型とモジュール両方の機能を担っている
というかモジュールアイテムことメソッドこそが型を特徴づけている節もある 特にRubyのduck typingとTSの構造的部分型
RustやGoはメソッド記法が使えるけど構文的には結合してない implの集積とかメソッドたちの集積はまあそう見れるか?
特定のかたをprimaryにおく関数かも単に
jsのmoduleはobject
commonjsではマジにそう。esmでも* as aのaはmodule namespace object
tsのambientでない(?)moduleやnamespaceはobjectにtranspileされる
肩に関しては実体ないaliasなのでobjectかどうかでいうとobjectではない
型に関してはnamespace/module M.Foo とobject propertyの M["Foo"] が構文上区別されているのはこれ
いらないかここ
構造的部分型
といえばTS
静的duck typing
ruby的な
classで説明する
OCamlのモジュールも構造的部分型(のはず)
型クラス
RustとHaskell
型tについてこういう関数が定義されててほしいですよね〜
ここでついてとか言ってるのが正確かはなぞ調べry
モジュインはadhoc poly確か
モジュインがまだ入ってない理由(調べる)
推論むずそう。とか
結論、っぱOCamlって抽象より明確を重要視してる言語っすよね〜〜