Future Promise 는 비동기 작업에 대한 클래스

비동기 작업을 체인하고 싶을 땐 map flatmap 을 사용하면 됨

하지만 계속해서 인덴트가 깊어지는 콜백헬이 오게 됨

(대충 유명한 짤)



그래서 async await 라는 키워드를 도입해서 신택스 슈거를 도입함




코틀린은 이걸 좀 더 생각해서 suspend 키워드 하나면 구현 가능해냄

(suspend 함수 호출 시 기본적으로 await 가 붙어있다고 생각하면 됨)








그리고 이걸 Future 클래스만이 아닌 일반적인 모나드에서 사용할 수 있게 만든것이 do 표기법

(하스켈보다 좀더 가독성이 좋다고 생각하는 스칼라의 do 표기법)

var f = await Future 를 f <- Future 로 표기할 뿐임






이런식으로 이해하면 이 세 개념들은 별거 없더라