내가 이해한게 맞는지 확인점 ㅇㅅㅇ

함수형은 함수를 합성함수처럼 모아서 코드를 짜는건데

함수를 합성 하려면

f라는 함수의 결과들의 집합과

g라는 함수의 가능한 입력값의 집합이 같아야 가능해짐

근데 예를들어

f: (string)->int 인 함수랑

g: (int)->float 인 함수가 있을 때

f에는 사이드이펙트로 null이라던가 throw가 될수 있는 함수야

근데 g에다 넣고 싶은데 g는 int 만 받아

그럼 이걸 합성해주기 위해 int 결과값하고, 그외의 값으로 분리를 시켜

그리고 g에다가는 int 결과값만 넣어주는거지

이게 모나드야

맞음?

구현은 대략 함수의 결과값을

class Monad<T>{
    T Result;
    T Failed;
}

로 반환을 시킨다음에

Result를 다른 함수에 집어넣어서 합성함수로 쓰는거지

맞음?