`
iyuan
  • 浏览: 471805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

lisp初体验-Practical Common Lisp笔记-12.数字、字符、字符串

    博客分类:
  • lisp
 
阅读更多

这一章节相当的无趣啊,而且对专业性有一定要求(数学)。来回把读了几遍,仍然感到晦涩。本想跳过,也罢,语言教学带些这种东东,似乎才显的专业啊。那就让我们开始吧~

 

本章要讲的是lisp内建的三种"原子型标准格式":数字,字符,字符串。严格来说,字符串应该算是字符的组合体,不过鉴于其特殊性(估计没有什么现代语言不默认支持字符串的吧),也一并算在里面了。

 

说到数字,很容易就会联想到数学--还有比这更繁复的东西么?Lisp不会让数学变得简单,不过至少,相对于其他语言而言,数学在Lisp中会显得简单、清晰的多。(它本身作为数学工具被发明出来的...)。在Lisp中,你能写出任何你能想到的数字(自己去想),做任何你想要的计算(同上)

 

小学毕业的童鞋应该都知道:一个数字是可以有多种书写方式的,在Lisp中,多种书写方式最终只会呈现出一种结果:

 

CL-USER> 10
10
CL-USER> 20/2
10
CL-USER> #xa
10
 

 

以下是常用的一些对应关系:

 

123                            ==> 123
+123                           ==> 123
-123                           ==> -123
123.                           ==> 123
2/3                            ==> 2/3
-2/3                           ==> -2/3
4/6                            ==> 2/3
6/3                            ==> 2
'二进制
#b10101                        ==> 21
#b1010/1011                    ==> 10/11
'八进制
#o777                          ==> 511
'十六进制进制
#xDADA                         ==> 56026
'三十六进制,#nr(n代表进制数)
#36rABCDEFGHIJKLMNOPQRSTUVWXYZ ==> 8337503854730415241050377135811259267835

 

 浮点类型的:

 

1.0      ==> 1.0
1e0      ==> 1.0
1d0      ==> 1.0d0
123.0    ==> 123.0
123e0    ==> 123.0
0.123    ==> 0.123
.123     ==> 0.123
123e-3   ==> 0.123
123E-3   ==> 0.123
0.123e20 ==> 1.23e+19
123d23   ==> 1.23d+25

 

 复数类型的:

 

#c(2      1)    ==> #c(2 1)
#c(2/3  3/4)    ==> #c(2/3 3/4)
#c(2    1.0)    ==> #c(2.0 1.0)
#c(2.0  1.0d0)  ==> #c(2.0d0 1.0d0)
#c(1/2  1.0)    ==> #c(0.5 1.0)
#c(3      0)    ==> 3
#c(3.0  0.0)    ==> #c(3.0 0.0)
#c(1/2    0)    ==> 1/2
#c(-6/3   0)    ==> -2

 

 

基础数学运算:

 

(+ 1 2)              ==> 3
(+ 1 2 3)            ==> 6
(+ 10.0 3.0)         ==> 13.0
(+ #c(1 2) #c(3 4))  ==> #c(4 6)
(- 5 4)              ==> 1
(- 2)                ==> -2
(- 10 3 5)           ==> 2
(* 2 3)              ==> 6
(* 2 3 4)            ==> 24
(/ 10 5)             ==> 2
(/ 10 5 2)           ==> 1
(/ 2 3)              ==> 2/3
(/ 4)                ==> 1/4

(+ 1 2.0)             ==> 3.0
(/ 2 3.0)             ==> 0.6666667
(+ #c(1 2) 3)         ==> #c(4 2)
(+ #c(1 2) 3/2)       ==> #c(5/2 2)
(+ #c(1 1) #c(2 -1))  ==> 3
(incf x)    === (setf x (1+ x)) === (setf x (+ x 1))
(decf x)    === (setf x (1- x)) === (setf x (- x 1))
(incf x 10) === (setf x (+ x 10))
(decf x 10) === (setf x (- x 10))

  数值比较:

 

(= 1 1)                        ==> T
(= 10 20/2)                    ==> T
(= 1 1.0 #c(1.0 0.0) #c(1 0))  ==> T

(/= 1 1)        ==> NIL
(/= 1 2)        ==> T
(/= 1 2 3)      ==> T
(/= 1 2 3 1)    ==> NIL
(/= 1 2 3 1.0)  ==> NIL

(< 2 3)       ==> T
(> 2 3)       ==> NIL
(> 3 2)       ==> T
(< 2 3 4)     ==> T
(< 2 3 3)     ==> NIL
(<= 2 3 3)    ==> T
(<= 2 3 3 4)  ==> T
(<= 2 3 4 3)  ==> NIL

(max 10 11)    ==> 11
(min -12 -10)  ==> -12
(max -1 2 -3)  ==> 2

 

 字符、字符串比较格式对比:

CHAR=       STRING=    
/= CHAR/= STRING/=
< CHAR< STRING<
> CHAR> STRING>
<= CHAR<= STRING<=
>=        CHAR>= STRING>=

 

注意:现在的lisp都已21bit的unicode为默认编码(大部分)

 

由于string类型本身是字符的列表形态,所以比较格式也能玩出一些新的花样:

(string= "foobarbaz" "quuxbarfoo" :start1 3 :end1 6 :start2 4

 

本篇略去了原文中许多数学概念,建议有需求、有功底的童鞋参看下原文

 

(未完待续)

 

 

1
0
分享到:
评论
1 楼 yolio2003 2011-10-17  
很奇怪,一些看不下去的英文在楼主的笔下怎么那么的简单易懂呀

相关推荐

    Practical Common Lisp-1st-2005

    《Practical Common Lisp-1st-2005》是一本专注于Common Lisp编程语言的实用书籍,作者Peter Seibel通过这本书向读者展示了如何使用Common Lisp来解决真实世界中的问题,强调程序员作为工程师和艺术家的双重身份,而...

    common-lisp-the-language-second-edition.PDF

    common-lisp-the-language-second-edition.PDF

    Lisp - 1990 - Common Lisp the Language, 2nd Edition - Steele, Guy L..pdf

    在Common Lisp中,字符串(Strings)和位向量(Bit Vectors)分别用于存储文本和二进制数据序列。哈希表(HashTables)是一种非常高效的数据结构,用于快速访问键值对。 包(Packages)是Common Lisp中用于管理命名...

    cad-lisp-3-表操作.LSP.lsp

    cad-lisp-3-表操作.LSP.lsp

    Practical Common Lisp笔记

    《Practical Common Lisp笔记》是一本深入探讨Common Lisp编程语言的实用教程。Common Lisp是一种功能强大的多范式编程语言,以其动态类型、宏系统和丰富的内置数据结构而闻名。这篇笔记详细记录了作者在学习过程中...

    emacs-lisp-intro-2.04.tar.gz

    标题中的"emacs-lisp-intro-2.04.tar.gz"是一个典型的压缩文件名,它表明这个文件是一个关于Emacs Lisp的介绍性资料,并且版本号是2.04,格式为tar.gz。tar.gz是一种在Linux和Unix系统中常用的文件压缩格式,它先用...

    实用Common.Lisp编程.pdf

    标题:“实用Common.Lisp编程.pdf” 描述:“实用Common.Lisp编程.pdf,2011.10出版” 从这些信息中,我们可以提炼出几个关键的知识点: ### Common Lisp语言简介 Common Lisp是一种高级的、通用的、多范式的编程...

    Practical Common Lisp pdf

    在压缩文件中,只有一个名为"practical_common_lisp.pdf"的文件,这是本书的PDF版本。由于原版PDF文件较大,经过7z压缩后,文件大小显著减小,便于下载和存储,但同时也能保持较好的图像和文字质量,满足读者的阅读...

    Successful Lisp How to Understand and Use Common Lisp - David B. Lamkins

    Provides practical advice for the construction of Common Lisp programs. Shows examples of how Common Lisp is best used. Illustrates and compares features of the most popular Common Lisp systems on ...

    AutoLisp源文件--标注高程.LSP

    AutoLisp源文件--标注高程.LSP

    cad 字符串里自动提取数字求和

    "cad 字符串里自动提取数字求和"这个主题是针对这样的需求,它涉及到如何从复杂的字符串中识别并提取数字,然后对这些数字进行求和操作,而忽略文字和特殊字符。 在CAD环境中,LISP(List Processor,列表处理器)...

    ANSI Common Lisp 中文翻译版.pdf

    该资源包含了 17 章节,从基础的列表、特殊数据结构、控制流程、函数、输入与输出、符号、数字、宏、Common Lisp 对象系统、结构、速度、进阶议题到高级主题的推论、生成 HTML、对象等。 ANSI Common Lisp 是一种...

    实用Common.Lisp编程

    这本《Practical Common Lisp》之所以号称Practical,正是因为这本书大量介绍Common Lisp在现实世界中的各种应用方式,算是第一本「入世传教」的Common Lisp著作。《Practical Common Lisp》是目前最畅销的Common ...

    Practical Common Lisp

    Practical Common Lisp 学习lisp的入门书籍

    lisp小工具-fx.zip

    计算多个数字之和、计算多条线段长度之和、插入墙高标注、查询多段线顶点坐标并绘制、自动生成页码、绘制示坡线、插入排水箭头 https://blog.csdn.net/qq_24141055/article/details/121446354

    practical common lisp.pdf

    ### 实用Common Lisp编程知识点概览 #### 一、书籍简介与评价 《实用Common Lisp》是一本面向实际程序员的Lisp语言入门书籍。作者Peter Seibel通过一系列真实世界的问题来展示Common Lisp的强大之处,强调工程性和...

    Practical Common lisp

    3. **其他实用案例**:除了上述两个案例外,《Practical Common Lisp》还包含了更多关于数字处理、字符串操作、列表和其他数据结构的应用实例,这些案例覆盖了Common Lisp在现实世界中的广泛用途。 #### 四、宏...

    Common-Lisp-Actors, 通用Lisp的actor系统.zip

    Common-Lisp-Actors, 通用Lisp的actor系统 这是一个简单且易于使用的Actor系统,在。设置需要波尔多螺纹。http://common-lisp.net/project/bordeaux-threads/ 2. 加载 actors.lisp 并开始使用它。 如果你有 Quick

    Lisp-music-player.rar_autolisp_autolisp程序_lisp_player

    标题中的“Lisp-music-player.rar”表明这是一个基于Lisp语言开发的音乐播放器软件,其源代码或可执行文件被压缩在RAR格式的文件中。RAR是一种流行的压缩格式,通常用于存储和分发多个文件,它允许用户将多个文件...

Global site tag (gtag.js) - Google Analytics