Scheme langserver —— Scheme 语言 LSP 实现
Scheme-langserver 是基于 Chez Scheme 并兼容 scheme r6rs 的 language server protocol 实现。它最大的特点是基于未完成的代码做编程辅助,包括自动完成、定义跳转等。这些功能是基于对r6rs标准的scheme进行静态分析得到的。它被发布在Akku和github。
一些辅助功能如自动完成、定义跳转、鼠标悬停显示文档等功能对于编程十分有帮助。但是,和其他的编程语言如java、python、javascript和c,lisp系的语言服务器协议实现(language server protocol implementation)几乎是一篇空白。emacs的Geiser、Dr. Racket的racket langserver还有swish-lint等等,他们的工作基本上是基于repl(Read-Eval-Print Loop)或者词法解析器的,而不是基于编程的一般过程。例如,如果程序员正参与一个未完成的项目,里面的代码还并不是都能跑起来,Geiser或者其他的竞品都只能提供对顶级变量、标识符的自动补全,这些标识符在Chez Scheme里面一般都通过environment-symbols过程列出来。也就是说,对于未完成的代码和局部标识符、局部变量(在其他语言中自动完成功能主要就是在补全它们),Geiser等等无济于事。类似的事情同样出现在定义跳转等其他功能上。
一个根本的原因是,对于scheme和lisp的其他方言,它们丰富的数据结构和灵活的控制机制让代码的静态分析变成了一个很大的挑战。事实上,scheme甚至没有通用的项目管理框架及对应的文件扩展名。以.ss和.scm为例,大多数程序员假设使用这两个文件扩展名的代码被用于一个正在运行中的环境,并且并不明示代码所需要的库信息。虽然Akku和Snow鼓励通过.sls和.sld提供文件信息并建构一套稳定的库管理框架,但是involve、load和很多其他过程让库链接动态化,这就更不可能在代码静态分析阶段得到什么信息了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 小米 A/B 实验场景基于 Apache Doris 的查询提速优化实践
导读: Apache Doris 是小米集团内部应用最为广泛的 OLAP 引擎之一,本文主要从数据的角度分析 A/B 实验场景查询的性能现状,探讨基于 Apache Doris 的性能优化的解决方案。经过一系列基于 Doris 的性能优化和测试,A/B 实验场景查询性能的提升超过了我们的预期。希望本次分享可以给有需要的朋友提供一些参考。 作者|小米集团大数据工程师 乐涛 业务背景 A/B 实验是互联网场景中对比策略优劣的重要手段。为了验证一个新策略的效果,需要准备原策略 A 和新策略 B 两种方案。随后在总体用户中取出一小部分,将这部分用户完全随机地分在两个组中,使两组用户在统计角度无差别。将原策略 A 和新策略 B 分别展示给不同的用户组,一段时间后,结合统计方法分析数据,得到两种策略生效后指标的变化结果,并以此判断新策略 B 是否符合预期。 小米 A/B 实验平台是一款通过 A/B 实验的方式,借助实验分组、流量拆分与科学评估来辅助完成科学的业务决策,最终实现业务增长的一款运营工具产品。其广泛的应用于产品研发生命周期中各个环节: 数据平台架构 本文主要从数据的角度分析 A/B 实验...
- 下一篇
CommonMark 创建者推出 Markdown 升级版:Djot
John MacFarlane 是加州大学的哲学教授,也是一名程序员。他是文档工具 Pandoc 的作者,也是 CommonMark 标准的制定者之一。CommonMark 是强定义的 Markdown 规范,它会对很多细节做出定义,以避免歧义性。 近日,John MacFarlane 又发布了一种轻量的标记语法:Djot(发音:/dʒɑt/)。Djot 包含许多派生自 CommonMark 的功能,同时修复了一些使 CommonMark 语法复杂且难以有效解析的问题。 按照 John MacFarlane 的说法,Djot 属于 Markdown 的升级版,最初是为了实现他在Beyond Markdown中提出的一些想法。 据介绍,Djot 的功能比 CommonMark 更全面,支持定义列表、脚注、表格、几种新的内联格式(插入、删除、高亮、上标、下标)、数学、智能标点符号、可应用于任何的属性元素,以及用于块级 (block-level)、内联级 (inline-level) 和原始内容 (raw content) 的通用容器。 在 Djot 的语法中,对硬换行的解析与常见的 Mar...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址