Peringatan yang adil, saya baru mengenal pemrograman fungsional sehingga saya dapat memiliki banyak asumsi buruk.
Saya sudah belajar tentang tipe aljabar. Banyak bahasa fungsional tampaknya memilikinya, dan mereka cukup berguna dalam hubungannya dengan pencocokan pola. Namun, masalah apa yang sebenarnya mereka pecahkan? Saya dapat mengimplementasikan tipe aljabar yang tampaknya (semacam) dalam C # seperti ini:
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
{
}
Tapi saya pikir sebagian besar akan setuju ini adalah program pemrograman berorientasi objek, dan Anda tidak boleh melakukannya. Jadi, apakah pemrograman fungsional hanya menambahkan sintaks yang lebih bersih yang membuat gaya pemrograman ini tampak kurang kotor? Apa lagi yang saya lewatkan?
class ThirdOption : Option{}
dan memberi Anda new ThirdOption()
tempat yang Anda harapkan Some
atau None
?
data Maybe a = Just a | Nothing
(setara dengan data Option a = Some a | None
dalam contoh Anda): Anda tidak dapat menambahkan kasus ketiga post-hoc. Meskipun Anda dapat mengurutkan jenis penjiplakan dalam C # dengan cara yang Anda perlihatkan, itu bukan yang tercantik.