Забудьте про функции, это математическое понятие, оно к императивному программированию слабо применимо, нет в компукере никаких функций, есть только инструкции (statement) и выражения (expression), а так же, опционально, блоки, для их объединения и именования, которые называют РЯОСЕДУЯЕ или МОДУЛЕ.
А если вам так интересны декларативные вычислительные конструкции, можете обратить внимание на то, как это сделано в LoLa у дедушки Вирта, там как раз никаких statement и эффектов, всё чисто на параметрах входа, выхода и локальных регистров. МапРедус, если вы понимаете, о чём я.