Hans Hüttel, Anja Elisasen Lumholtz Nielsen, Nana Gjerulf Sandberg, Christoffer Lind Andersen, Peter Mikkelsen
{"title":"具有类型安全复制/粘贴功能的结构编辑器","authors":"Hans Hüttel, Anja Elisasen Lumholtz Nielsen, Nana Gjerulf Sandberg, Christoffer Lind Andersen, Peter Mikkelsen","doi":"10.1145/3587216.3587221","DOIUrl":null,"url":null,"abstract":"The editor calculus of Godiksen et al [2] describes the edit primitives of a syntax-directed editor for functional programs in a simply typed lambda calculus. However, a main shortcoming is that only top-down programming is allowed, meaning that we can only construct the AST from the root. This makes it difficult to refactor previously written code without having to potentially delete and re-insert large parts of a program. The present paper modifies the calculus to not only handle programs with Hindley-Milner-style let polymorphism but also to incorporate a notion of copy/paste functionality. We present an extended semantics and a type system of the new system and prove that it remains sound: Well-typed editor expressions will always produce a well-typed program.","PeriodicalId":318613,"journal":{"name":"Proceedings of the 34th Symposium on Implementation and Application of Functional Languages","volume":"36 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"A Structure Editor with Type-Safe Copy/Paste\",\"authors\":\"Hans Hüttel, Anja Elisasen Lumholtz Nielsen, Nana Gjerulf Sandberg, Christoffer Lind Andersen, Peter Mikkelsen\",\"doi\":\"10.1145/3587216.3587221\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The editor calculus of Godiksen et al [2] describes the edit primitives of a syntax-directed editor for functional programs in a simply typed lambda calculus. However, a main shortcoming is that only top-down programming is allowed, meaning that we can only construct the AST from the root. This makes it difficult to refactor previously written code without having to potentially delete and re-insert large parts of a program. The present paper modifies the calculus to not only handle programs with Hindley-Milner-style let polymorphism but also to incorporate a notion of copy/paste functionality. We present an extended semantics and a type system of the new system and prove that it remains sound: Well-typed editor expressions will always produce a well-typed program.\",\"PeriodicalId\":318613,\"journal\":{\"name\":\"Proceedings of the 34th Symposium on Implementation and Application of Functional Languages\",\"volume\":\"36 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-08-31\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 34th Symposium on Implementation and Application of Functional Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3587216.3587221\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 34th Symposium on Implementation and Application of Functional Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3587216.3587221","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
The editor calculus of Godiksen et al [2] describes the edit primitives of a syntax-directed editor for functional programs in a simply typed lambda calculus. However, a main shortcoming is that only top-down programming is allowed, meaning that we can only construct the AST from the root. This makes it difficult to refactor previously written code without having to potentially delete and re-insert large parts of a program. The present paper modifies the calculus to not only handle programs with Hindley-Milner-style let polymorphism but also to incorporate a notion of copy/paste functionality. We present an extended semantics and a type system of the new system and prove that it remains sound: Well-typed editor expressions will always produce a well-typed program.