{"title":"基于约束的类型推断关系求解器","authors":"Eridan Domoratskiy, Dmitry Boulytchev","doi":"arxiv-2408.17138","DOIUrl":null,"url":null,"abstract":"We present a miniKanren-based type inferencer for an educational programming\nlanguage with first-class functions, S-expressions, and pattern-matching. The\nlanguage itself is untyped which adds a certain specificity to the problem and\nrequires the employment of techniques conventionally used in implicit/gradual\ntyping settings. The presence of polymorphic and recursive types poses a\ncertain challenge when implementing the inferencer in miniKanren and requires a\nnumber of tricks, optimizations, and extensions to be used; we report on those\nas well.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0000,"publicationDate":"2024-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"A Relational Solver for Constraint-based Type Inference\",\"authors\":\"Eridan Domoratskiy, Dmitry Boulytchev\",\"doi\":\"arxiv-2408.17138\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"We present a miniKanren-based type inferencer for an educational programming\\nlanguage with first-class functions, S-expressions, and pattern-matching. The\\nlanguage itself is untyped which adds a certain specificity to the problem and\\nrequires the employment of techniques conventionally used in implicit/gradual\\ntyping settings. The presence of polymorphic and recursive types poses a\\ncertain challenge when implementing the inferencer in miniKanren and requires a\\nnumber of tricks, optimizations, and extensions to be used; we report on those\\nas well.\",\"PeriodicalId\":501197,\"journal\":{\"name\":\"arXiv - CS - Programming Languages\",\"volume\":null,\"pages\":null},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-08-30\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"arXiv - CS - Programming Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/arxiv-2408.17138\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2408.17138","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
A Relational Solver for Constraint-based Type Inference
We present a miniKanren-based type inferencer for an educational programming
language with first-class functions, S-expressions, and pattern-matching. The
language itself is untyped which adds a certain specificity to the problem and
requires the employment of techniques conventionally used in implicit/gradual
typing settings. The presence of polymorphic and recursive types poses a
certain challenge when implementing the inferencer in miniKanren and requires a
number of tricks, optimizations, and extensions to be used; we report on those
as well.