in a strict language? I don't think it's possible. Because if you take a better look you'll see that it's not enough to mark functions as sync or async since inside the functions each line of code can be considered a synchronous function in it's own.
What you want is something like Haskell that's lazy and its not about "executing statements" but rather "evaluting expressions".
What you want is something like Haskell that's lazy and its not about "executing statements" but rather "evaluting expressions".