A project aiming to investigate an approach to effect checking that is fundamentally different from previous research is to receive funding from the Swiss National Science Foundation.

To understand a program that makes use of effects – the interaction of a procedure with its environment in a way that goes beyond just taking arguments and producing a result – its execution history must be taken into account.

The central idea of the research, headed by the Programming Methods Laboratory, is to talk about capabilities instead of effects. For example, instead of saying a function “throws an IOexception”, the researchers will use the approach that the function “needs the capabilities to throw an IOException”. The research will explore the ideas of effects as capabilities in detail. On the basis of the theoretical modelization, they will develop a specification and implementation for adding effects to the programming language Scala in order to validate them. Scala, like most languages, does not currently track effects. The researchers will need to investigate how effects can be gradually migrated to an existing codebase and library ecosystem. As Scala runs on host languages such as Java or JavaScript, they will also examine how those techniques can be extended to a multi-language environment.