Common Lisp 学习笔记系列01


要学一门编程语言,首先需要将语言的环境配置好。如果想要个直接上手的环境,感谢日本的大神 Shirakumo,打造了一个 Common Lisp 的 IDE -- Portacle ,选择下载相对应的版本。然后只要了解下 quicklisp 的操作就好。从体验来看,Windows 使用 portacle 很方便,类 unix 的系统的话还是推荐自己配置。此外, The Common Lisp Cookbook 中也有介绍使用 Roswell 和 Docker 来搭建 Common Lisp 的环境,有兴趣的可以去尝试下,反正我是懒的去弄了。


安装解释器(implementation)

  • Ubuntu/Debian

    sudo apt-get install -y sbcl
  • Mac OS

    brew install sbcl
  • CentOS/Fedora

    sudo yum install -y sbcl

    其他各版本的解释器,请参考:Wikipedia's list of implementations

安装 quicklisp

  • 获取

    curl -O https://beta.quicklisp.org/quicklisp.lisp
  • 加载

    sbcl --load quicklisp.lisp
  • 安装

    (quicklisp-quickstart:install)

    默认安装路径为 ~/quicklisp,当然,也可可以指定 quicklisp 的安装目录,通过使用 :path 关键字,如我自己不想让该目录显示出来,将目录的名字最前面加个点 .,就像这样:

    (quicklisp-quickstart:install :path "~/.quicklisp")
  • 配置

    在执行完 install 后,运行

    (ql:add-to-init-file)

    程序将会自动创建 ~/.sbclrc 并将以下内容写入文件中:

    #-quicklisp
    (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
    (user-homedir-pathname))))
    (when (probe-file quicklisp-init)
    (load quicklisp-init)))

    其中 merge-pathnames 后面接的是 quicklisp 安装路径加 setup.lisp

    如果不想默认加载 quicklisp 的话,可以不设置,使用 quicklisp 时需手动加载 setup.lisp

quicklisp 用法:

  • 加载库

    (ql:quickload "package-name")
  • 卸载库

    (ql:uninstall "package-name")
  • 查询库

    (ql:system-apropos "package-name")
  • 更新

    (ql:update-dist "quicklisp")
  • 查看依赖关系

    (ql:who-depends-on "package-name")
  • 默认项目目录(本地的项目库目录)

    ~/common-lisp/
    ~/.local/share/common-lisp/source
    ~/quicklisp/local-projects
  • 查看默认的目录

    (asdf/source-registry:default-user-source-registry)
    asdf:*central-registry*
  • 添加项目目录

    (push #p"/path/to/my-project/" asdf:*central-registry*)
    (ql:quickload "my-project")

Common Lisp 项目

  • 使用 cl-project 包快速创建

    (ql:quickload "cl-project")
    (cl-project:make-project #P"/path-to-project/project-name")

    执行后,会在相对应的目录下生成以下项目文件

    |-- my-project.asd
    |-- my-project-test.asd
    |-- README.markdown
    |-- README.org
    |-- src
    | `-- my-project.lisp
    `-- tests
    `-- my-project.lisp
  • 导入项目

    将项目放入到 quicklisp 默认项目目录中,或是将项目路径添加到 asdf:*central-registry* 变量中。


Reference:

Lisp-01: 相关开发环境配置部署的更多相关文章

  1. Storm开发——环境配置部署

    配置开发环境:http://storm.apache.org/releases/current/Setting-up-development-environment.html 开发环境定义: Stor ...

  2. Android Studio开发环境配置以及相关说明

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下在开发的时候使用的Android Studio开发环境版本以及相关注意事项. 一般来讲,每隔一段时间就要检查下Andr ...

  3. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

  4. XE4 IOS开发环境配置

    l 配置IOS的安装开发环境 使用RAD XE4开发IOS程序,一台MAC是必须的(也可以用虚拟机), MAC上需要安装Xcode, 独立版本的Commnand Line Tools 以及RAD的pa ...

  5. Linux 桌面玩家指南:18. 使用 Docker 隔离自己的开发环境和部署环境

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  6. 基于webpack4的react开发环境配置

    一.基础配置 1.init项目 mkdir react-webpack4-cook cd react-webpack4-cook mkdir src mkdir dist npm init -y 复制 ...

  7. Ubuntu开发环境配置

    主要是: 源的更新 安装vim编辑器 远程登录xrdp相关配置 synergy symless键鼠共享配置 对新买的硬盘进行格式化和分区 vsftp环境搭建 gcc开发环境配置 qt5开发环境配置 m ...

  8. Win8.1+VS2013+WDK8.1+VirtualBox or VMware 驱动开发环境配置

    https://blog.csdn.net/charlessimonyi/article/details/50904956 Win8.1+VS2013+WDK8.1+VirtualBox or VMw ...

  9. XMPP开发环境配置

    首先配置XMPP开发环境配置需要的软件 先安装xampp-osx-1.8.3-5-installer.dmg 安装成功后launchpad里会多出一个XAMPP(其他),点开里面的manager-os ...

随机推荐

  1. GitHub 热点速览 vol.10:疫情下的 GitHub

    作者:HelloGitHub-小鱼干 摘要:如果说上周的 GitHub 是股市附体 star 低迷不振,那么本周的 GitHub 像极了受到疫情影响而未开学的高校们,新生 GitHub 项少,能上 G ...

  2. disruptor 核心概念 二

    一.Disruptor图解 二.disruptor核心概念 1.RingBuffer到底是啥?正如名字所说的一样,他是一个环(首尾相接的环)它用做在不同上下文(线程)间传递数据的buffer Ring ...

  3. 第八章、小节三keep-alive

    主要缓存的是ajax中的json 我的路由中的内容被加载过一次,我就把路由中的内容放到内存中,下次再进入这个路由的时候,不需要重新加载页面,直接从内存中获取数据. 切换不同城市,调用不同城市数据 但是 ...

  4. 简述N种排序算法

    排序算法概述 排序算法是程序员日常很常见的算法,基本上每天都会使用排序,在这里将进行一下总结. 排序算法大致可分为比较类排序和非比较类排序二种,其核心区别可以简单的理解为非比较类排序是对比较类排序之前 ...

  5. Simulink仿真入门到精通(五) Simulink模型的仿真

    5.1 模型的配置仿真 由各种模块所构建的可视化逻辑连接,只是模型的外在表现,模型仿真的核心驱动器是被称作解算器(Solver)的组件,相当于Simulink仿真过程的心脏,驱动着模型仿真,它在每一个 ...

  6. kafka原理解析

    两张图读懂kafka应用: Kafka 中的术语 broker:中间的kafka cluster,存储消息,是由多个server组成的集群. topic:kafka给消息提供的分类方式.broker用 ...

  7. 题解 NOIP2018【赛道修建】—— 洛谷

    这道题有一点点树上dp的意思(大佬轻喷 我刚拿到这道题的时候毫无头绪,只知道这道题要二分答案 为什么是二分答案??? 题目: 目前赛道修建的方案尚未确定.你的任务是设计一 种赛道修建的方案,使得修建的 ...

  8. Android NDK JNI 入门笔记-day04-NDK实现Hash算法

    * Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...

  9. Netty源码分析一<序一Unix网络I/O模型简介>

    Unix网络 I/O 模型   我们都知道,为了操作系统的安全性考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer.以下 ...

  10. MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)

    网络上有很多MySQL表碎片整理的问题,大多数是通过demo一个表然后参考data free来进行碎片整理,这种方式对myisam引擎或者其他引擎可能有效(本人没有做详细的测试).对Innodb引擎是 ...