common lisp 下载设置入门

起点:下载

linux: https://gist.github.com/jteneycke/7947353

下载最新的sbcl & emacs:

http://jaist.dl.sourceforge.net/project/sbcl/sbcl/1.3.5/sbcl-1.3.5-x86-windows-binary.msi

http://mirrors.ustc.edu.cn/gnu/emacs/windows/emacs-24.5-bin-i686-mingw32.zip

curl -k -O https://beta.quicklisp.org/quicklisp.lisp

sbcl –load quicklisp.lisp

(quicklisp-quickstart:install :path “quicklisp-down/”)

(ql:quickload “quicklisp-slime-helper”)

配置 .emacs

这里通过key mapping解决emacs启动慢。

;;;; .emacs

(setq inhibit-startup-message t)

(setq gnus-inhibit-startup-message t)

(setq frame-title-format “%b”)

(tool-bar-mode -1)

(setq default-major-mode ‘text-mode)

(setq column-number-mode t)

(setq next-screen-context-lines 4) ;for page down.

(setq kill-ring-max 200) ;for history record

(setq message-log-max t)

;(setq make-backup-files nil); no backup!

(setq

backup-by-copying t ; don’t clobber symlinks

backup-directory-alist

‘((“.” . “~/.emacs_saves”)) ; don’t litter my fs tree

delete-old-versions t

kept-new-versions 6

kept-old-versions 2

version-control t) ; use versioned backups

(setq scroll-margin 3

scroll-conservatively 10000)

(require ‘package) ;M-x list-packages

(add-to-list ‘package-archives

‘(“melpa” . “http://melpa.org/packages/“) t)

(add-to-list ‘load-path “~/.emacs.d/elpa/vlf-1.7/”)

(package-initialize) ;auto set load-path of installed pkg and load them

;;common lisp + slime

(defun my-load-slime-and-set ()

(interactive) “the magic of eclip command”

(load (expand-file-name “E:/PL/lispstick/quicklisp-down/slime-helper.el”))

(setq inferior-lisp-program “sbcl”)

(slime) “M-x slime”

)

(global-set-key (kbd “ ”) ‘my-load-slime-and-set)

加到鼠标右键上下文菜单

假设emacs解压到c:\emacs,从cmd启动:

C:\emacs\bin\runemacs.exe -Q –load .emacs

通常我们希望对一个文件点右键就可以打开,把下面的另存为right-menu.reg, 双击运行就行了:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\emacs]

@=”emacs”

[HKEY_CLASSES_ROOT*\shell\emacs\command]

@=”C:\emacs\bin\runemacs.exe -Q –load E:\PL\lispstick\.emacs \”%1\”“

emacs + slime 操作

window:

C-x 3 vertical split

C-x o move to next window

C-x 0 kill current window

C-x 1 kill all windows except current window

buffer:

C-x C-f find and load file

C-x C-w save as

C-x C-s save

C-mouse

C-x LEFT/RIGHT ARROW switch buffer

C-x C-q toggle read-only/read-write

C-x k kill current buffer

frame:

C-x 5 2 make new frame

C-x 5 o move to next frame

Edit:

C-a C-k kill whole line

C-x u undo last operaption

C-x z repeat last command

Esc n op repead n times

Move:

C-a 移到行首(ahead),C-e行尾

C-v page down

M-v page up

Search:

M-x o ;vimgrep

Highlight:

M-s h r ;highlight regexp

M-s h u ;unhighlight regexp

Setting:

C-h v A;check variables A’s value

M-x set-variable next-screen-context-lines

M-: (getenv “HOME”)

M-: (expand-file-name “~”)

M-x linum-mode ; toggles the line number mode on and off

M-x (require ‘vlf-setup) ; M-x vlf to open very large file

M-x slime 打开repl buffer

当焦点在repl buffer时:

TAB 命令补全

C-Enter 自动补充上括号并求值

C-c M-o 清空显示

当焦点在text buffer时:

C-c C-k 编译当前文件并加载

C-c C-l 选择一个文件加载

C-c C-c 编译当前光标处的toplevel form。

C-M-q 自动缩进

C-c C-] 补全右括号

C-M-a C-M-e M-x slime-end-of-defun

C-c C-c 是体现了lisp的interactive

C-x C-e 对光标处求值,不用print

C-M-x 对当前的toplevel form求值

C-c C-r 对选中的区域求值

C-c < list callers

C-c > list callees

C-c C-t 打开或关闭当前光标处的trace.

M-x slime-untrace-all

教程

ansi common lisp: https //7chan.org/pr/src/ANSI_Common_Lisp_-_Paul_Graham.pdf

创建独立的可执行程序

lispstick\Steel Bank Common Lisp\1.1.12

.\sbcl.exe –core sbcl.core

(defun main () (print “hello”))

(sb-ext:save-lisp-and-die “hello.exe” :toplevel #’main :executable t)

.\hello.exe

这个文件有31MB!

我也试过allegro CL的,太复杂了,没成功。

vim lisp 设置

vim我更熟练,也有类似slime的叫slimv:

https://bitbucket.org/kovisoft/slimv/get/bd61b0a83d66.zip

它会自动检测sbcl的安装位置,把它丢到vimfiles/bundle下面就行了,

.vimrc设置:

“slimv

let g:paredit_mode = 1 “输入’(‘时自动加上’)’

let g:paredit_electric_return = 0 “防止Enter换行时把’)’单独一行

let g:lisp_rainbow = 1 “更花哨些

总的说来

虽然vim也支持lisp,但是emacs支持得更好。

ref

http://www.sbcl.org/manual/

时间: 2024-11-05 18:31:02

common lisp 下载设置入门的相关文章

《实用Common Lisp编程》pdf格式下载电子书免费下载

<实用Common Lisp编程>pdf格式下载电子书免费下载 https://u253469.ctfile.com/fs/253469-302448499 内容简介 由塞贝尔编著的<实用Common Lisp编程>是一本不同寻常的Common Lisp入门书.<实用Common Lisp编程>首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现.S-表达式.函数与变量.标准宏与自定义宏.数字与字符

Common Lisp入门笔记(一)7个基本运算符

摘自 <Lisp语言- 陈光喜> 表达式实例: >(+ 1 2) >3 Common Lisp表达式求值规则是: 首先对每个参数从左到右进行求值: 其次将这些已经求值的参数作为运算符函数的参数进行函数调用求值: 所求得的值作为表达式的值返回. 一.Lisp的数据类型 Lisp有其它语言的一切类型,还提供另外其它语言没有两种类型: symbol(符号)和 list(表). (1)符号显示时总是被转换为大写.一般要使用 quote 来引用它 >'qwert QWERT (2)列表

Common Lisp入门笔记(二)赋值与输入输出

摘自 <Lisp语言- 陈光喜> 一.赋值 (1)let Lisp中使用let来完成局部变量的定义.其形式为:(let  ((var1 exp1)(var2 exp2)-(varn expn)) exps) 其中操作符 let 表明将定义局部变量. (vari expi)对表示变量名 vari, 该变量的初始值为表达式 expi的值.Let 语句中的 exps 部分为表达式集合,完成所需要的处理.所定义的诸变量 var1,-,varn在这些表达式有效,即在 let 语句体内有效.整个 let

搭建fedora开发环境 common lisp, c++, go

原帖http://www.linuxdown.net/install/soft/2016/0303/4903.html 安装vim sudo dnf -y update sudo dnf install vim-enhanced common lisp 原帖:http://www.programgo.com/article/17905013763/ 需要用到的软件: sbcl,比较流行的一种common lisp实现:emacs,用作开发环境,虽然比较复杂,但是比原来的命令行好用多了:slime

Common Lisp编程初步---环境搭建和外部lisp代码运行

1 介绍 Lisp是世界上第二古老的语言,第一古老语言是Fortran.Lisp语言的创立者为John McCarthy,一位人工智能领域里的先驱.该语言自创立以来经历了50多年而不衰,是一种很有生命力的语言.该语言的发展和使用与CMU和MIT两所高校密不可分,在相当长的时期内是这两所高校的大学计算机课程指定语言. 在该语言创立之初,除了创建者外,还有其他的一些高校著名学者也参与到了Lisp语言的发展完善当中.于是就出现了多个Lisp的dialect,这对该语言的移植非常不便.为此在1981年丛

ANSI Common Lisp Chapter 2

Chapter 2 总结 (Summary) Lisp 是一种交互式语言.如果你在顶层输入一个表达式, Lisp 会显示它的值. Lisp 程序由表达式组成.表达式可以是原子,或一个由操作符跟着零个或多个实参的列表.前序表示法代表操作符可以有任意数量的实参. Common Lisp 函数调用的求值规则: 依序对实参从左至右求值,接着把它们的值传入由操作符表示的函数. quote 操作符有自己的求值规则,它完封不动地返回实参. 除了一般的数据类型, Lisp 还有符号跟列表.由于 Lisp 程序是

Common LISP自带单步跟踪功能

Common LISP自带单步跟踪功能,执行 (step 要跟踪的命令)即可.以sdraw为例,跟踪其执行. [1]启动单步跟踪 SDRAW[60]> (step (sdraw '(a (b c d) c))) step 1 --> (SDRAW '(A (B C D) C))     显示下一个要执行的语句 Step 1 SDRAW[61]>                         等待用户输入调试指令 [2]输入help查看帮助,帮助的内容很多,前面一大段和Debug是一样的

Common Lisp学习资源整理

Lisp Hackers: Interviews with 100x More Productive Programmers Posted on June 26th, 2013 Lisp Hackers: Interviews with 100x More Productive Programmers, by Vsevolod Dyomkin, is available for free in multiple formats from Leanpub. Let Over Lambda Post

c++实现类似Common Lisp的多参数加法和比较

在CL里我们可以这样: 1 $ sbcl 2 * (+ 1 2 3) 3 6 4 * (< 1 2 3) 5 T 6 * (< 2 3 1) 7 NIL 8 * 从简单的方面看, CL的+和<就是一个接收多参数的函数,有点类似cpp的add(1,2,3)和less(1,2,3)这样.所以当C++11开始有了变参模板以后, 就可以玩多参数的加法和多参数比较了 1 #include <functional> 2 template<typename O, typename A