표현식의 책임
표현식의 책임은 오로지 하나의 의미를 산출해 내는 것이다.
반환 타입이 nothing(void, unit 등)인 함수(편의상 액션이라고 칭함)를 호출하는 것도 표현식의 일부긴 하지만, 사실 목적상 그런 것들은 유의미한 표현식이 아니라고 생각한다. 정확히 말하면 그런 것들이 표현식에 포함되는 것은 바람직하지 않다.
다른 표현식으로 수렴하게 되는 함수의 일부로서 액션이 나타나게 되는 건 일종의 문(statement) 위임 같은 동작이다.
그런 문 위임을 제외하면 버려지는 표현식이 제한되는 경우도 자연스럽다.
액션은 이런 점에서 표현식에서의 사이드 이펙트이다.
이 문제를 다룰 때 한 가지 다르게 생각해볼 수 있는 여지가 있다.
Kotlin같은 관점을 빌려오는 건데, 문을 표현식의 일부로 적극 포함시키는 거다.