input에 대해 output이 deterministic한 함수가 pure한 거 아님?

근데 IO 같은 것들이 들어간 함수가 output으로 Optional 같은 wrapper class 내지는 type을 뱉는 건 함수의 output type을 일정하게 맞춰줄 뿐이지 그 값의 고정성을 보장해주지는 못하지 않음? 

그러면 뭘 어떻게 하든 결국 순함수는 아닌 거잖아