タグ

オブジェクトに関するyoshihiro503のブックマーク (3)

  • 数理科学的バグ撲滅方法論のすすめ 第4回 関数型言語とオブジェクト指向,およびOCamlの"O"について

    関数型言語とオブジェクト指向は相容れない,という説をよく聞く。たしかに「オブジェクトは状態を持つ」「関数型プログラミングでは,できるだけ破壊的代入を行わない」とすれば,二つの概念は矛盾しているようにも思われる。また,技術的観点以外にも,「とかくシンプルさを好む多くの関数型言語プログラマが,何かと物事を複雑にする(と思われている)オブジェクト指向を嫌っている」という面があるかもしれない。 しかし,個人の好き嫌いはさておき,実際問題として,関数型言語とオブジェクト指向は大いに関係がある。むしろ,基礎理論については,ほとんど同じコミュニティの人たちが取り組んでいる,と言ってもいい。例えば,以下のような研究が,1980年代から現在に至るまで行われている。 関数型言語のモデルであるλ計算という体系において,オブジェクトを表現する研究(参考リンクなど) λ計算にならい,(プロトタイプベースの)オブジェ

    数理科学的バグ撲滅方法論のすすめ 第4回 関数型言語とオブジェクト指向,およびOCamlの"O"について
  • モジュールとクラスの使い分け方 - osiire’s blog

    OCamlにはモジュールとクラスがあります。この二つの仕組みは、直感的によく似た機能を持っているので、どう使い分けたらいいのか迷う時があります。そこで、モジュールとクラスの使い分け方について少しまとめてみます。 基礎的なデータ/データ構造の場合 スタックとかキューとかグラフとか日付とか、内部構造を隠して操作だけを提供する、比較的基礎的な構造を作りたい場合です。この場合は、迷わずモジュールでいいです。ここをクラスにすると、バイナリメソッドで泣きます。 アプリケーションデータの場合 アプリケーション内で使う特定のデータ構造は、色々なデータの集合である事が多いので、大抵レコードになります。このレコードの代わりにクラスを使うのはありだと思います。逆に、これをモジュールでやると、内部型がないモジュールになって、オーバースペックな感じになります。もちろんレコードのままでいいなら、別にわざわざクラスにす

    モジュールとクラスの使い分け方 - osiire’s blog
  • 知ってる?オブジェクトってね... - osiire’s blog

    レコードと高階関数で書けるんだ!TAPLに載ってるのを読んで、へー(×2)と思ったので紹介するね!*1 # type t = { mutable name : string; mutable age : int };; type t = { mutable name : string; mutable age : int; } # type m = { get_name : unit -> string; get_age : unit -> int; birthday : unit -> unit };; type m = { get_name : unit -> string; get_age : unit -> int; birthday : unit -> unit; } # let obj = let self = { name = "osiire"; age = 20; } in

    知ってる?オブジェクトってね... - osiire’s blog
  • 1