在Lisp中,如果我们希望对一个变量赋值,可以使用set函数,用法如下:

(set ‘my-value "my string")  

上面的代码是对变量my-value进行赋值,值是"my String"。注意其中的'my-value前面是有一个单引号的。

我们知道,在Lisp中,'my-value其实是(quote my-value)的简写,所以上面的set函数代码也可以写成这样:

(set (quote my-value) "my string")  

不过,因为set函数使用的次数很多,每次都要使用quote或者在变量名前加一个单引号比较麻烦,于是发展了setq函数,setq中的q字母就是代表quote的意思,使用setq函数就可以这样写了:

(setq my-value "my string") 

如果只是这样使用,可以认为set和setq是没有差别的,只是格式简化了。

但是,事实上setq比set函数要高级一些,setq函数还可以同时对多个变量进行赋值,像下面这样:

(setq my-value1 "my string 1" my-value2 "my string 2") 

上面的代码同时对变量my-value1和my-value2进行赋值。而set函数就不能这样使用了。

lisp : set 与setq 函数的更多相关文章

  1. Elisp 中变量赋值函数 set 与 setq 辨析

    在 Elisp 中,为变量赋值的函数有 set 与 setq,但是,两者存在很大的差异. 使用 set 赋值: 如果我们想为变量 flowers 赋值为一个 列表 '(rose violet dais ...

  2. 在Visual Lisp中处理自动化错误

    Handling Automation errors in Visual LISP 翻译自原文Kean's blog:http://through-the-interface.typepad.com/ ...

  3. Lisp简明教程

    此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程 ...

  4. 箭头函数 Arrow Functions/////////////////////zzz

    箭头符号在JavaScript诞生时就已经存在,当初第一个JavaScript教程曾建议在HTML注释内包裹行内脚本,这样可以避免不支持JS的浏览器误将JS代码显示为文本.你会写这样的代码: < ...

  5. 深入浅出ES6(七):箭头函数 Arrow Functions

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 箭头符号在JavaScript诞生时就已经存在,当初第一个JavaScript教 ...

  6. Lisp与JAVA的酷毙结合——abcl

    最近看了一本叫做<黑客与画家>的书,其中对于Lisp语言大加褒奖.自己试着用了一下,虽然确实有反人类之嫌,但是确实是一门不错的语言,New Architect杂志上有一篇介绍ITA软件公司 ...

  7. 初窥c++11:lambda函数及其用法

    转载于:点击打开链接 为什么需要lambda函数 匿名函数是许多编程语言都支持的概念,有函数体,没有函数名.1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值.正因为有这样的需求 ...

  8. Golang面向过程编程-函数

    Golang面向过程编程-函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是函数 简单的说函数的作用就是把程序里多次调用的相同的代码部分定义成一份,然后起个名字,所有的 ...

  9. 转-为什么Lisp语言如此先进?(译文)

    之前在看黑客与画家的时候看过,今天重温,完全不一样的感觉! 原文地址:http://www.ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html ...

随机推荐

  1. JAVA配置文件/反射操作

    配置文件 1. 在src目录下新建一个file, 命名为XXX.properties 2.编写配置文件: 3. import java.util.ResourceBundle; 4. 使用如下代码读取 ...

  2. python - 字符编码/格式化/替换符

  3. android 控件设置透明度

    问题:java文件中引用组件设置透明度:mGuideLayout.getBackground().setAlpha(125); 一直报null 修改办法:对应的布局文件中添加 android:back ...

  4. Angular 创建组件

    创建组件 0 命令创建 1 创建组件 定义hello.component.ts组件 在app.module.ts中引用并添加到declarations声明中 在app.component.html中使 ...

  5. 【leetcode】657. Robot Return to Origin

    Algorithm [leetcode]657. Robot Return to Origin https://leetcode.com/problems/robot-return-to-origin ...

  6. Pytorch之验证码识别

    本文主要实现了两个工作:1.验证码生成   2.Pytorch识别验证码 一. 验证码生成 方法1. 利用PIL库的ImageDraw实现绘图,此法参考博客实现: #!/usr/bin/env pyt ...

  7. ffmpeg 加载双语字幕

    set infile=in.mp4 set subfile1=cn.srt set subfile2=en.srt set subvf1="subtitles=%subfile1%:forc ...

  8. SIOCGMIIPHY 和 SIOCSMIIREG 命令

    使用ioctl命令时,可以看到上述两个命令的存在, 在头文件 include/linux/sockios.h,定义如下: #define SIOCETHTOOL    0x8946        /* ...

  9. $Django setting.py配置 ,GET、POST深入理解,三件套,orm对象关系映射简介

    1 django中app的概念: 大学:----------------- 项目  信息学院 ----------app01  物理学院-----------app02 ****强调***:创建的每一 ...

  10. why should the parameter in copy construction be a reference

    if not, it will lead to an endless loop!!! # include<iostream> using namespace std; class A { ...