ここではoo-functionalハイブリッドについて説明していますが、実際にこの名前の対象となる言語はいくつあるのでしょうか。Scala、Clojure、F#?もう?
答えごとにそのような言語を1つと、それがoo-機能ハイブリッドであると考える理由を少し説明するのは素晴らしいことです。
ここではoo-functionalハイブリッドについて説明していますが、実際にこの名前の対象となる言語はいくつあるのでしょうか。Scala、Clojure、F#?もう?
答えごとにそのような言語を1つと、それがoo-機能ハイブリッドであると考える理由を少し説明するのは素晴らしいことです。
Objective Caml-MLファミリーのどの言語と同じように機能しますが、その名前が示すように、十分に開発された(そしてややユニークな-私が知っている唯一の完全に構造的な)OOシステムもあります。
CommonLisp。機能的な側面は非常に明白ですが、一方、CLOSはすべてのオブジェクトモデルの母です。
Smalltalk。多くの人が同意しないと思いますが、第一級関数を持っているだけでなく、それらを多用しているため、最も基本的な構造(if / elseやループなど)でさえ、関数をとる関数呼び出しとして実装されていると思います-引数を入力し、「機能的」というラベルに値します。その上、Rubyをリストし、FP部門にあるもののほとんどは、Smalltalkから継承されています。
Nemerleは(残念ながら)それほど広く知られていない機能-OOハイブリッドであり、.NETプラットフォームで実行するように設計されています。Nemerleを面白くしているのは、その用途の広いマクロシステムと強力な型推論です。
O'Haskellは、基本的にオブジェクト指向機能がボルトで固定されたHaskellです。
Racket is a functional language (a dialect of Scheme) with an class system. The class system supports both overridable methods (like Java, C#) and augmentable methods (the superclass's method gets control first; it decides if/when to call the subclass's method and what to do with the result). The class system also supports higher-order contracts.
Actually, there are many object systems for Lisps and Schemes. CLOS for Common Lisp is probably the most famous and influential.