Scheme-langserver是一款面向scheme语言的语言服务器,它基于LSP协议(Language Server Protocol)提供了自动补全(auto-complete)、寻找变量定义(goto definition)等功能。
11月21日,scheme-langserver发布了类型推断功能,并将该功能整合进入了自动补全。如图所示,在补全光标处的引导词“l”(大写L)时,scheme-langserver给出了多个可选项,并且将类型匹配程度较高的“length-a”、“length-b”放到了比较靠前的位置——因为“>=”过程(也就是其他语言中的函数)要求变量必须是“real?”,而上文可以推断出“length-a”、“length-b”为“integer?”类型。
这项工作的主要特点在于:
例如对于javascript代码,参数a的类型是不清楚的——关于这一点,在typescript当中的解决方法是第二行中的案例——添加类型标注(number)。
但是实际上,我们当然知道“+”操作符操作的只能是“number”(当然还有string等等)。因此,应当由计算机自行推出“a”的类型为“number”而不需要自行推断(当然,这是有一定的代价和其他问题的)。
目前这项工作还存在一些问题,主要包括:
Scheme-langserver同时是“2022中国互联网发展创新与投资大赛公益项目暨2022年中国开源创新大赛”二等奖项目。
未经允许不得转载:岩猫星空网 » scheme-langserver 发布类型推断功能,并整合进入 auto-autocomplete.