4. 모나드
C#과 Kotlin에서 ?. 연산자는 null일 수도 있는 값에서 속성을 조회하거나 메서드를 호출하는 방법입니다. 수신자가 null이면 표현식 전체가 null이 됩니다. 그렇지 않으면 수신자 안의 null이 아닌 값이 호출을 받습니다. ?.는 연쇄적으로 사용할 수 있으며, 이 경우 처음으로 나온 null 결과에서 조회 연쇄가 끝납니다. 이렇게 null 검사를 연쇄하는 것은 깊게 중첩된 if를 작성하고 유지보수하는 것보다 훨씬 편리합니다.
마찬가지로, 예외는 오류 코드를 직접 확인하고 전파하는 것보다 훨씬 편리합니다. 동시에, 로깅은 각 함수가 로그 결과와 반환값을 함께 반환하도록 하는 것보다 전용 로깅 프레임워크를 두는 방식으로 가장 쉽게 구현할 수 있습니다. 연쇄적인 null 검사와 예외는 일반적으로 언어 설계자가 이러한 사용 사례를 미리 예상해야 하는 반면, 로깅 프레임워크는 일반적으로 부수 효과를 활용하여 로그를 남기는 코드와 로그를 누적하는 과정을 분리합니다.