Now with Closures :-)

Once we had function references and higher order functions, of course we thought about implementing closures. The following screenshot shows the syntax we have chosen:

From the closures, we generate a function whose pointer we then pass to the higher order function. So we map the closure mechanism to the function pointer stuff we did before. Also, we don’t support references to local variables from within closures. “Transporting” their values along with the closures would certainly be possible, but would lead to quite some overhead. Since we’re targetting embedded systems, we decided that that’s not a good idea.

Notice also that the parameters don’t require the specification of a type. We use type inference to automatically calculate the type from the context.

You know what’s the coolest thing about the closures? It took just three hours to implement them. Syntax, generator, type inference and all. MPS really is neat🙂

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s