如何在emacs中写common lisp代码_common lisp编辑器-程序员宅基地

技术标签: lisp  前端  emacs  

我最近在安装lisp的过程中吃了不少得弯路,这次写在这边希望我以后再次遇到安lisp的时候少走弯路

方言与解释器

安装lisp的时候,会遇到很多方言和解释器的选择
常见的方言有

  • Common Lisp
  • Scheme
  • Emacs Lisp
  • Clojure
  • Racket
    还有解释器
  • emacs
  • SBCL
  • 我选择了普遍的common lisp和据说很厉害的emacs

解释器

安装

接下来是安装,一开始并不知道common lisp 是什么,如何安装,也不知道什么实现之类的
找不到所谓的“common lisp”我就直接看B站学习emaca
emacs安装的时候,直接找到能够install的文件(名字带有install的),安装的事后她们直接帮忙配置好了,好在emacs不需要什么环境
emacs一开始的时候会比较乱,很多功能也不知道,用emacs,一开始就知道几个快捷键(C-X和A-X等),把它当成普通的文本编辑器用即可
直接安装进入下一步

配置

配置emacs很麻烦,一开始的时候看不懂配置文件,说把一串代码写入XXX.emacs或者XXX.el文件中,我不知道什么意思,也找不到这种文件
在这个过程中,有B站UP主说,这两种文件都是可以创建的,我中途创建过很多次,可每次都配置失败,不知道为什么,每次打开emaca,然后按照他的输入代码来,都没有反应
后来在我无数次的试错下,我知道了,

  1. XXX.emacs(配置文件的名字)如果没有是需要自己创建的
  2. 一般在windows下,配置文件需要放在home目录~/.emacs.d文件夹下
  3. home目录一般是在用户名下的Roaming下,例如我的目录是C:\Users\jin\AppData\Roaming.emacs.d
  4. 如果创建XXX.emacs失败的话,可以尝试创建XXX.el(我就是这样创建成功,成功读取此文件下的配置)

安装包

melpa包

写commonlisp我一开始也不知道如何写,后来我上网搜索,说在emacs中输入M-X elmp(代码是错误的具体代码忘记了,不重要)我输入了之后果然可以写lisp代码了,但是当时我并不知道这不是common lisp实现,而是clisp(emacs-lisp方言)
后来我想要真正写common lisp。于是,我搜索到了slime(一开始我觉得emcas和slime是相对的两种解释器)然后我拿着安装包不知道做啥,看着slime的readme,她说要实现一个什么MELPA,这个东西我也不了解,之前我总是错误的写在配置文件里,等到配置文件正确了,我可以在emacs中正确安装melpa了
0 安装melpa得第0步,意思是说,可以选择先安装melpa或者先从slime官网下载slim(推荐找到install类型的安装包,省事),但是slime的介绍会让你下载melpa
1 melpa是安装各种emacs包的工具包,Slime的readme里介绍的,安装melpa的网站和方法如下:https://melpa.org/#/getting-started
2 要检查是否安装melpa,可以在emacs中输入代码:M-x package-list-packages, or M-x list-packages),如果没有安装的时候,那一列不会显示melpa,如果安装成功,就会显示melpa,如图安装正确

slime包

准确来说,slime可以从网络上找,slime下载地址:https://github.com/slime/slime

也可以直接从melpa里面找,我是直接在melpa里面找到slime,然后直接安装的,我就选择安装,在emacs的melpa中安装结束后,我先打开Slime的GitHub上的readme,readme上说,先配置好MELPA,并且用M-x package-install RET slime RET下载slime,然后直接在.emacs中输入:(setq inferior-lisp-program “sbcl”),
在这里插入图片描述

然后这张图就说,直接M-X slime,然后就一切结束了,能正常运行,然而对于新手来说,直接输入代码根本没用,主要有3个坑
1 我是在melpa中直接下载slime的,因为我输入这段:M-x package-install RET slime RET,代码无效,安装不下来
2 按照前文的步骤,我是在XXX.el文件下配置的,所以我这段代码应该复制进入XXX.el文件中,我就是把代码输入XX.el文件中的
3 这段(setq inferior-lisp-program “sbcl”)代码中的sbcl不是一个具体的数字,而是一段路径,我还需要搞定这个“sbcl”,这个sbcl指向的是一个sbcl.exe文件

安装SBCL

官网:http://www.sbcl.org/
需要找sbcl下载,根本不知道下载的是什么,我下载过几次,都是一些压缩包,打开之后啥都不知道,省事的直接按照如下步骤
1 打开https://sourceforge.net/projects/sbcl/files/sbcl/
2 找到比较新的版本,找到安装包,如图在这里插入图片描述
点开安装,然后安装进适当的路径,在路径中找到sbcl.exe文件
然后:把上文中配置文件的代码setq inferior-lisp-program “sbcl”->中的sbcl换成sbcl.exe的安装路径,主意是
在这里插入图片描述中间的安装slime的代码是用melpa安装的时候自动的输入的

安装quicklisp

今天我随便写个文章,想要在桌面创建一个文件夹,于是我打开了熟悉的案件,打开emacs XM slime
然后我让chat把python代码转换为lisp,输入的时候总是失败,他说要搞个什么quicklisp,我也不知道是什么 ,查了半天,知道了那是一个能够操控电脑的lisp程序,于是我就按照他的步骤来了,他的步骤非常多,我就用一些树形图来表示了,这是我成功的流程,不一定适合所有电脑
1 上网下载quicklisp:https://www.quicklisp.org/beta/
1.1 从那个网站下载中间蓝色里面的 https://beta.quicklisp.org/quicklisp.lisp(我也忘记下的是啥版本了,如果无用可以下载别的)
2 配置环境,把刚下载的quicklisp.lisp文件的路径放入系统环境,是下面的system environment中(系统路径需要指定到文件,而系统路径上面的用户路径,是指定到文件夹)
3 正式安装
3.1 (load “quicklisp.lisp”) 在emacs/slime的RECP中,输入这行开头的代码
,这个代码是加载quicklisp的,其实就是安装上面输入系统变量的文件,(我安装之后版本是1.5感觉挺落后的,看了一眼系统变量,感觉自己没错就好)然后好像要点击确定什么的
3.2 (quicklisp-quickstart:install) 开始安装,一堆词条就会出来
3.3 (ql:add-to-init-file)
3.31 这段代码是配置这样的:以后每次需要用到quicklisp,就可以直接quicklisp
3.32 启动这段代码之后,就会创建这样的一个文件 C:\Users\用户名.sbclrc
3.321 题外话,C:\Users\用户名 下面经常会有很多的配置文件,还有一些安全文件,还有一些环境变量需要用到的文件,好奇怪,不知道为什么会这样
4 另外,我记得在这个过程中,我在emacs的配置文件ini.el中(C:\Users\jin\AppData\Roaming.emacs.d\init.el),增加了一段代码:(require 'cl) ,不知道这段代码有啥用,以后万一换了电脑也许还能用

最后

最后 启动emacs,输入M-X slime,这个时候可以畅快的写cmmomlisp了在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangjin2019/article/details/129638221

智能推荐

Word插件开发

创建一个新的 Office 插件项目:在 Visual Studio 中,选择"文件" -> “新建项目”,然后在模板中选择"Office/SharePoint",选择适当的 Office 插件项目模板,如 Word 插件、Excel 插件或 PowerPoint 插件。设计用户界面:在解决方案资源管理器中,打开你的插件项目,并在其中打开相应的 Office 文件(如 Word 文件、Excel 文件或 PowerPoint 文件)。你可以在 Office 应用中测试插件的功能,并在开发过程中进行调试。

便携式iv检测仪解析

在应用场景方面,便携式IV功率测试仪广泛应用于光伏电站的日常运维、光伏组件生产过程中的质量控制以及光伏项目的前期评估等环节。在光伏电站运维中,定期对光伏组件进行IV测试,可以及时发现性能下降或损坏的组件,为电站的运维提供有力支持。首先,从工作原理来看,光伏电站便携式IV功率测试仪通过模拟太阳光照射光伏组件,并测量组件在不同电压下的电流输出,从而绘制出IV曲线。此外,测试仪还可以计算光伏组件的功率输出、转换效率等参数,为用户提供全面的性能评估。

postgresql 索引之 hash_load_categories_hash postgres-程序员宅基地

文章浏览阅读3.6k次。os: ubuntu 16.04postgresql: 9.6.8ip 规划192.168.56.102 node2 postgresqlhelp create indexpostgres=# \h create indexCommand: CREATE INDEXDescription: define a new indexSyntax:CREATE [ UNIQUE ..._load_categories_hash postgres

face++实现人脸识别及人脸相似度对比_face++人脸识别 html5-程序员宅基地

文章浏览阅读4.8k次。使用face++,先获取key和secret下方是人脸识别,还添加了画出人脸轮廓的正方形下方是人脸识别,还添加了画出人脸轮廓的正方形 import requests#网络访问控件 from json import JSONDecoder#互联网数据交换标准格式 import cv2 as cv#图像处理控件 http_url ="https://a..._face++人脸识别 html5

desencrypt java md5_Java实现DES加密与解密,md5加密以及Java实现MD5加密解密类-程序员宅基地

文章浏览阅读322次。很多时候要对秘要进行持久化加密,此时的加密采用md5。采用对称加密的时候就采用DES方法了import java.io.IOException;import java.security.MessageDigest;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;im..._java desencrypt.encrypt(pass)

BZOJ 2818 欧拉函数,线性筛_线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj-程序员宅基地

文章浏览阅读145次。题目链接:https://www.acwing.com/problem/content/description/222/给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。GCD(x,y)即求x,y的最大公约数。输入格式输入一个整数N输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤10^7输入样例:4..._线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj

随便推点

测试算法的性能(以选择排序为例)_算法性能测试-程序员宅基地

文章浏览阅读1.6k次。测试算法的性能 很多时候我们需要对算法的性能进行测试,最简单的方式是看算法在特定的数据集上的执行时间,简单的测试算法性能的函数实现见testSort()。【思想】:用clock_t计算某排序算法所需的时间,(endTime - startTime)/ CLOCKS_PER_SEC来表示执行了多少秒。【关于宏CLOCKS_PER_SEC】:以下摘自百度百科,“CLOCKS_PE_算法性能测试

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

【数据结构】静态表查找之顺序查找、二分查找、分块查找_读取表元是什么意思-程序员宅基地

文章浏览阅读4.1k次,点赞8次,收藏23次。​通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找。也就是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或数据元素。_读取表元是什么意思

如何设置交易滑点?精确到tick 测算期货冲击成本(附源码)_滑点设置多少合适-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏18次。我们在非撮合回测模式下,因为无法获知交易价格当时的真实盘口价差、挂单数量,常主观设定一个滑点均值,比如针对螺纹钢等合约,设置 1 跳,针对某些交易不活跃的品种,设置 2 跳。但是这种近乎拍脑袋的方法并不精确。我们今天尝试通过简单的辅助工具,实现尽可能接近准确的 tick 级别滑点设置,代码已写好,不用编程也可获得结果。_滑点设置多少合适

大数据技术之 Azkaban_azkaban要建立job之间的依赖关系需要使用-程序员宅基地

文章浏览阅读551次。尚硅谷大数据技术之 Azkaban—————————————————————————————更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之 Azkaban(作者:尚硅谷大数据研发部)版本:V3.0一 概述1.1 什么是 AzkabanAzkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的 key:value 对的方式,通过配置中_azkaban要建立job之间的依赖关系需要使用

python批量修改文件编码格式,由utf-16 le 格式转为utf-8_utf16le转换utf8-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏9次。#! python3# encoding: utf-8import osimport chardetdef strJudgeCode(str1): return chardet.detect(str1)"""def readFile(path): with open(path,'r',encoding='utf-16 le') as f: filecontent ..._utf16le转换utf8