Linear Logic and Resource-Aware Functional Programming