যথাযথ সতর্কতা, আমি কার্যকরী প্রোগ্রামিংয়ে নতুন তাই আমি অনেক খারাপ ধারণা ধরে রাখতে পারি।
আমি বীজগণিতের ধরণগুলি সম্পর্কে শিখছি। অনেকগুলি কার্যকরী ভাষা তাদের কাছে রয়েছে বলে মনে হয় এবং এগুলি প্যাটার্ন মেলানোর সাথে মিলিয়ে মোটামুটি কার্যকর useful যাইহোক, তারা আসলে কোন সমস্যাটি সমাধান করে? আমি সি # এর মতো একটি আপাতদৃষ্টিতে (সাজ্টের) বীজগণিত টাইপ প্রয়োগ করতে পারি:
public abstract class Option { }
public class None : Option { }
public class Some<T> : Option
{
public T Value { get; set; }
}
var result = GetSomeValue();
if(result is None)
{
}
else
{
}
তবে আমি মনে করি এটি বেশিরভাগের পক্ষে সম্মত হবে এটি অবজেক্ট অরিয়েন্টেড প্রোগ্রামিংয়ের জারজ এবং এটি কখনও করা উচিত নয়। সুতরাং ক্রিয়ামূলক প্রোগ্রামিং কি এমন ক্লিনার সিনট্যাক্স যুক্ত করে যা এই স্টাইলের প্রোগ্রামিংকে কম গুরুতর বলে মনে করে? আমি আর কি মিস করছি?
class ThirdOption : Option{}এবং আপনি new ThirdOption()যেখানে প্রত্যাশা করেছিলেন Someবা এটি দিয়েছিলাম তখন কী হবে None?
data Maybe a = Just a | Nothing( data Option a = Some a | Noneআপনার উদাহরণের সমান ): আপনি কোনও তৃতীয় কেস পোস্ট-হক যুক্ত করতে পারবেন না। আপনি যেভাবে দেখিয়েছেন সেভাবে আপনি সি # তে যোগফলের ধরণের প্রকারের সাজিয়ে তোলা করতে পারেন, এটি সবচেয়ে সুন্দর নয়।