<div dir="ltr"><div><p style="color:rgb(0,0,0);font-size:13px">The School of Informatics, University of Edinburgh invites applications for a postdoctoral research assistant on the SAGE project (Scoped and Gradual Effects), funded by Huawei. The post will be for eighteen months.<br></p><p style="color:rgb(0,0,0);font-size:13px">We seek applicants at an international level of excellence.  The School of Informatics at Edinburgh is among the strongest in the world, and Edinburgh is known as a cultural centre providing a high quality of life.</p><p style="color:rgb(0,0,0);font-size:13px">If interested, please contact Prof. Philip Wadler <<a href="mailto:wadler@inf.ed.ac.uk">wadler@inf.ed.ac.uk</a>>. Full details are <a href="https://elxw.fa.em3.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001/job/2929/?utm_medium=jobshare">here</a>. Applications close at 5pm on 14 January 2021.</p><p style="color:rgb(0,0,0);font-size:13px"><span style="font-weight:bolder">The Opportunity:</span></p><p style="color:rgb(0,0,0);font-size:13px">In the early 2000s, Plotkin and Power introduced an approach to computational effects in programming languages known as <em>algebraic effects</em>. This approach has attracted a great deal of interest and further development, including the introduction by Plotkin and Pretnar of <em>effect handlers</em>. Several research languages, such as Eff, Frank, Koka, and Links, support the use of algebraic effects. A few languages, including Multicore O'Caml and WebAssembly, support specific algebraic effects, and we may see general algebraic effects make their way into mainstream languages in the future.</p><p style="color:rgb(0,0,0);font-size:13px">The proposed research has two focusses: (a) a simpler version of static scoping for algebraic effect handlers, and (b) gradual types for algebraic effect systems.</p><p style="color:rgb(0,0,0);font-size:13px">The former is a question of how to match an effect with its corresponding handler. This issue arises when two effects have the same name, and you expect the handler for one but invoke the handler for the other. Some current solutions, like tunnelling and instance variables, are based on lexical scoping. However, despite this insight, tunnelling and instance variables are more complex than lexical binding of a variable to a value. In particular, the type system needs to track that an effect does not escape the scope of its surrounding handler (reminiscent of the funarg problem with dynamic variable binding). Can we do better?</p><p style="color:rgb(0,0,0);font-size:13px">The latter is a question of how to integrate legacy code that lacks typed effects with new code that supports typed effects. Usually, integration of dynamically and statically typed languages is best explored in the context of gradual types, which support running legacy code and new code in tandem. To date there is only a tiny amount of work in the area of gradual types for effects, and important aspects of algebraic effects, such as effect handlers, have yet to be addressed. Overall, work to date on effect handlers is often complex, and attention is required to where ideas can be simplified, which is the ultimate objective of this project.</p><p style="color:rgb(0,0,0);font-size:13px"><span style="font-weight:bolder">Your skills and attributes for success:</span></p><br class="gmail-Apple-interchange-newline"></div><div><br></div>Essential<br>• PhD (or close to completion) in programming languages or a related discipline.<br>• Expertise and experience in relevant areas, including lambda calculus, type systems, and compilation.<br>• Ability to implement prototype language processors in O’Caml, Haskell, or a related language.<br>• Excellence in written and oral communication, analytical, and time management skills.<br>• Ability to collaborate with a team.<br><br>Desirable<br><br>• Published research in programming languages or a related field, preferably in top-tier conferences.<br>• Experience in presenting at conferences or seminars.<br>• Knowledge of effect systems or gradual type systems.<br>• Experience with a proof assistant, such as Agda or Coq.<br>• Strong programming and software engineering skills.<p style="color:rgb(0,0,0);font-family:Times;font-size:medium"><br></p><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr">.   \ Philip Wadler, Professor of Theoretical Computer Science,<br>.   /\ School of Informatics, University of Edinburgh<br></div><div>.  /  \ and Senior Research Fellow, IOHK<br></div><div dir="ltr">. <span><a href="http://homepages.inf.ed.ac.uk/wadler/" target="_blank">http://homepages.inf.ed.ac.uk/wadler/</a></span></div></div><div dir="ltr"><br></div></div></div></div></div></div></div></div>