Forward referencing functions in D

Ali Çehreli acehreli at
Sat Oct 17 15:40:58 UTC 2020

On 10/17/20 8:28 AM, NonNull wrote:
> On Friday, 16 October 2020 at 21:28:18 UTC, Steven Schveighoffer wrote:
>> Inner functions have benefits:
>> 1. They are only accessible inside the function. Which means you only 
>> have to worry about correctness while INSIDE that function.
>> 2. inner functions have access to the outer function's stack frame.
>> Often, I use inner functions to factor out a common piece of code that 
>> I don't want to have to write multiple times in the same function.
>> -Steve
> How can you write two inner functions that call each other? (Recursively)

I thought of the following method just now. Yes, there are lambdas but 
who cares? :) (Besides, 'a' can be defined as a proper function below.)

import std.range;

void foo(string s) {
   // b is not initialized yet
   void delegate() b;

   // a is initialized
   auto a = {
     while (!s.empty) {

   // Set b to a lambda
   b = {
     while (!s.empty) {


void main() {


More information about the Digitalmars-d-learn mailing list