공정한 경고, 나는 함수형 프로그래밍을 처음 사용하므로 많은 나쁜 가정을 가질 수 있습니다.
나는 대수적 유형에 대해 배우고 있습니다. 많은 기능적 언어에는 이러한 기능이있는 것으로 보이며 패턴 일치와 관련하여 상당히 유용합니다. 그러나 실제로 어떤 문제를 해결합니까? C #에서 다음과 같이 겉보기에 (대부분의) 대수 유형을 구현할 수 있습니다.
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
) : 사후에 세 번째 사례를 추가 할 수 없습니다. 표시된 방식으로 C #에서 합계 유형을 에뮬레이트 할 수 있지만 가장 예쁘지는 않습니다.