関数呼び出しのためには普通、引数として与えられた式を評価する。
引数同士の評価順は不定とする言語も多いが、大概の言語では引数を評価してから本体を評価する。
これに対して、引数はそれが必要になった時点で評価するようにすればLazyになる。

さて、引数の取り方がLazyかどうかは言語によって決まっているのが現状だが、必ずしもそうでなければいけないというわけではない。
例えば、関数を定義する際に引数ごとにLazyかどうかのフラグを立てるのでも良い。

こういう仕組の言語ってあるかな?
とりあえずマクロ以上に混乱する手法かもしれないが。