首页 > 其他分享 >一种基于clisp的Common Lisp集成开发环境可行简易搭建方案

一种基于clisp的Common Lisp集成开发环境可行简易搭建方案

时间:2023-08-21 21:33:49浏览次数:31  
标签:文本编辑 Lisp VSCode Common clisp 搭建

绪论

背景

Common Lisp是一种优美的、小巧的语言,然而新手在入门Common Lisp时往往会遇到集成开发环境搭建的门槛,为Common Lisp的入门造成了障碍。

尽管技术人员的推荐中,存在一种常见的集成开发环境配置方案是Emacs+Slime+SBCL三件套的方案,但该方案存在一些问题:

  1. Emacs和Common Lisp实现(SBCL)对于新手来说都是陌生的,可能需要同时学习两种陌生的工具,这是十分不利的
  2. 作为Common Lisp的一种主流实现,SBCL自带的REPL难以直接使用,几乎只能通过"Emacs提供用户界面、Slime提供通信连接"或者类似方案来获得用户界面

本文的意义与主要内容

因此,对于Common Lisp的环境搭建问题,亟待降低难度,从而降低Common Lisp的入门门槛。笔者同样使用Emacs+Slime+SBCL的方案,但由于先前对Emacs的使用有所适应,才得以接受该方案,但同样对于环境的搭建难度深有体会。本文提出一种简易的Common Lisp IDE搭建方案,该方案允许使用任何带命令行终端的文本编辑器,意在解决环境搭建问题。

文本编辑器与IDE介绍

文本编辑器,如Atom、VSCode,常常可以用于搭建一门编程语言的集成开发环境。

以脚本语言的IDE为例,通常可以观察到主要涉及到工作的区域有两个

  1. 文本编辑区域:在该区域加载并查看和/或编辑文本文件
  2. 终端:终端可以有两种状态
    • 系统终端:以命令的形式执行整个脚本文件
    • REPL:在该区域以命令的方式逐行试运行该语言程序;

由此,只要具备了

  • 带命令行的文本编辑器
  • 某语言的REPL

两者,即可组成最简易的集成开发环境。

简易集成开发环境搭建

Clisp介绍、安装及使用

根据《Land of Lisp》的推荐,可以使用Clisp,因为它自带一个容易使用的REPL

安装及运行clisp,以Ubuntu系统为例

sudo apt-get install clisp # 安装
clisp # 运行

文本编辑器

根据前文介绍,任何带命令行终端的文本编辑器均可用。作为用户可能的一种常见选择,这里选择使用VSCode。

  • 新建空白脚本文件
  • 打开VSCode,选择项目所在根目录文件夹
  • 使用Ctrl+` 打开VSCode自带的命令行终端,输入
    clisp
    
    即可进入REPL

至此,简易IDE搭建完毕。剩下的需要考虑的只是安装其它辅助拓展,例如文本高亮。

文本高亮

在VSCode商店搜索"lisp",即可获取拓展"lisp",用于提供Lisp的文本高亮。

标签:文本编辑,Lisp,VSCode,Common,clisp,搭建
From: https://www.cnblogs.com/suspended-monitor/p/17647136.html

相关文章

  • 哪篇论文宣布了 HTAP 数据库的诞生? StoneDB带您解读《A Common Database Approach for
    theme:condensed-night-purple开启掘金成长之旅!这是我参与「掘金日新计划·12月更文挑战」的第4天,点击查看活动详情本文是 StoneDB学术分享会专栏的第五篇,我们来分享一下HTAP学术界上比较经典的一篇论文《ACommonDatabaseApproachforOLTPandOLAPUsinganIn-M......
  • java:使用flexmark-java 实现 CommonMark(规范 0.28)解析
    文档https://github.com/vsch/flexmark-java依赖Java8<dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.62.2</version></dependency>Java9+&l......
  • 使用swagger时出现Unable to infer base url. This is common when using dynamic ser
    在使用Swagger的时候访问地址后出现了错误,http://localhost:8001/swagger-ui.html一直在弹窗提示,还取消不了我这边自己的问题可能是因为Swagger类没有跟启动类在同一个模块当中,虽然我将Swagger所在的模块进入到启动类所在的模块,但是可能是idea没有识别到.还是报错,可以按照......
  • warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-comm
    问题描述在我正确地安装好mysql包之后,再安装mysql,就出现了这么一个问题:就去疯狂百度找解决问题的方法!!!问题解决经过查找资料,才发现,原来是有GPG验证检查,只需要禁止GPG验证检查就行啦!也就是在安装mysql的语句后面,加上这样一个语句:--nogpgcheck总起来就是:yum-yinstallmys......
  • 运行 docker-compose -f common.yml -f kafka_cluster.yml up 命令之后,其中一个broker
    今天在运行docker-compose-fcommon.yml-fkafka_cluster.ymlup,这条命令的时候,原来应该启动的broker-3容器没有启动,然后允许dockerps-a查看存在但是没有up的容器。 找到broker-3的容器id:,dockerlogs a6488cb653a1 。找打容器启动日志,发现关键错误信息。En......
  • Java反序列化Commons-Beanutils篇-CB链
    <1>环境介绍jdk:jdk8u65CB:commons-beanutils1.8.3pom.xml添加<dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3</version></dep......
  • JavaScript、ECMA、CommonJs、NodeJS、TypeScript的关系
    返回JavaScript发布时间:1995发布公司:Netscape(网景)它是一种高级的解释型编程语言,简称JS它最初的设计目标是改善网页的用户体验。......
  • Java Commons-Collections链分析
    CC1调用链代码执行的关键点InvokerTransformer.java transform(Objectinput) Classcls=input.getClass();Methodmethod=cls.getMethod(iMethodName,iParamTypes);returnmethod.invoke(input,iArgs);主要靠transform方法用反射的方式执行命令input......
  • spring cloud common模块更新后,需要同步更新哪些服务?
    首先common没有启动类,他里面放的是一些静态资源,公共代码。理论上是需要更新所有依赖common模块的,就是maven依赖里面引用common包的都需要更新,但是这样太麻烦了。一般可以只更新需要依赖这一变动的服务。如果有feign调用,需要更新调用方,被调用方和网关gateway......
  • POJ 1458 Common Subsequence(动态规划)
    传送门代码如下:#include<iostream>#include<cstdio>usingnamespacestd;intmaxLen[1000][1000];intmain(){strings1,s2;while(cin>>s1>>s2){intlength1=s1.length();intlength2=s2.length();......