আমি মনে করি না আমি টাইপ ক্লাস বুঝি। আমি কোথাও পড়তাম যে "ইন্টারফেস" (ওও থেকে) হিসাবে টাইপ শ্রেণীর চিন্তাভাবনা যে কোনও ধরণের প্রয়োগগুলি ভুল এবং বিভ্রান্তিমূলক। সমস্যাটি হ'ল, আমি এগুলিকে অন্যরকম কিছু হিসাবে দেখতে সমস্যা এবং কীভাবে এটি ভুল।
উদাহরণস্বরূপ, আমার যদি টাইপ ক্লাস থাকে (হাস্কেল সিনট্যাক্সে)
class Functor f where
fmap :: (a -> b) -> f a -> f b
ইন্টারফেসের চেয়ে এটি কীভাবে আলাদা [1] (জাভা সিনট্যাক্সে)
interface Functor<A> {
<B> Functor<B> fmap(Function<B, A> fn)
}
interface Function<Return, Argument> {
Return apply(Argument arg);
}
একটি সম্ভাব্য পার্থক্য যা আমি ভাবতে পারি তা হ'ল নির্দিষ্ট অনুরোধে ব্যবহৃত ধরণের শ্রেণি প্রয়োগের বিষয়টি নির্দিষ্ট নয় বরং পরিবেশ থেকে নির্ধারিত হয় - বলুন, এই ধরণের একটি বাস্তবায়নের জন্য উপলভ্য মডিউলগুলি পরীক্ষা করে। এটি একটি বাস্তবায়ন নিদর্শন বলে মনে হয় যা কোনও ওও ভাষায় সম্বোধন করা যেতে পারে; সংকলক (বা রানটাইম) এর মতো কোনও মোড়ক / প্রসারক / বানর-প্যাচারের জন্য স্ক্যান করতে পারে যা এই ধরণের প্রয়োজনীয় ইন্টারফেসটি প্রকাশ করে।
আমি কী মিস করছি?
[1] নোটটি একটি ওও ভাষা দেওয়ার কারণে f a
থেকে আর্গুমেন্টটি সরিয়ে ফেলা হয়েছে তা নোট করুন fmap
, আপনি কোনও অবজেক্টে এই পদ্ধতিটি কল করছেন calling এই ইন্টারফেসটি ধরে নিয়েছে f a
আর্গুমেন্টটি ঠিক করা হয়েছে।