내가 이해한게 맞는지 확인점 ㅇㅅㅇ
함수형은 함수를 합성함수처럼 모아서 코드를 짜는건데
함수를 합성 하려면
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를 다른 함수에 집어넣어서 합성함수로 쓰는거지
맞음?
님 근데 현역임? ㅇㅅㅇ - 2400
왜?
나 6개월하고 이직하고 싶은데 1년 6개월만 다닐 사람을 받아 줄까 궁금함 ㅇㅅㅇ 보충역이라 - 2400
엇복학 싫어서 더 다닐거라고 구라까고 막판에 통수 ㄱ
몰루 ㅠㅠ 나도 정복하고 싶다 모나드 대충 flatMap 같은 느낌이라고 그랬어
합성함수 어쩌고 하는 부분은 전부 틀렸음
모나드는 사이드 이펙트를 처리하는 수많은 방법 중에 하나인거지 그게 함수형의 본질이라거나 하는 거랑은 아무 상관 없음
모나드는 함수 합성이랑 아무 상관없는 개념임
어떻게든 퓨어하게 사이드이펙트를 처리하는게 모나드 핵심인거고
일단 Result랑 사이드이펙트를 묶는건 맞는거지?
니가 저 위에서 구현이 어쩌고 하는건 대표적인 모나드 중 하나인거고... (Haskell maybe 모나드임) 본질이랑은 크게 상관없음
그러니까 Maybe 모나드 구현해놓은걸 보고 전체 모나드가 이렇다고 받아들이고 있는거임 너는
모나드 얼마나 한 3~4일 고민해봐 그럼 알아챌거야
그리고 윗댓은 틀린게 모나드는 합성이 중요하다 너가 쓴 모나드 예는 함수가 합성되고 계산이되면서 예외가 발생하면 그 예외를 하나로 보고 대응책을 만드는거지