初识LISP(1)——基本的结构、语法与数据类型

       既然下定决心学习LISP,我计划学习LISP的过程都以博客的形式做总结。当然是需要参考学习网上的教程,网上的教程讲解的比较详细。而我打算以自己的理解来做尽可能简洁的总结,一方面将自己的学习过程做一个回顾,另一方面,如果日后忘记了什么知识点,也方便查询。

一、LISP—程序结构

      首先lisp很独特的一点就是圆括号,程序自始至终都是圆括号,例如函数、表达式……这一特色的功能与Java的花括号“{}”和Python的缩进功能类似。LISP的前缀表示方法类似于栈的概念,即a+b,写作(+ a b),下面第一句就是实现(3+5)/2,值得注意的是运算符和数字之间必须以空格间隔开,这是最基本的语法要求。

(print (/ (+ 3 5) 2))
(format t "~%");打印一个换行符
(write-line "Hello World!");最经典的,打印“Hello World!”


二、LISP—基本语法

       这里需要记住的是LISP的三个基本块:原子、列表和字符串。原子可以理解成编译器视角下的单一元素,可以由数字、字母和特殊字符组成。而列表是包含原子与子列表的序列。字符串是由双引号括起的字符。

      需要注意的是1.LISP语言不区分大小写;

                              2.过去调用函数的方式为f(x),而在LISP的世界一切都是平等的,写作(f  x);

                              3.只有三种类型的元素是常数,返回的是自己的值:数字;字母t,代表逻辑真;nil,代表逻辑假,还有一个空的列表。

     LISP允许名字里包含数字,但是也别过分到都是数字,这样编译器只能认为这是数字了好吧。之前说原子里可以包含特殊字符,比如什么双引号、冒号什么的,那么也需要有转义字符的,转义字符是()。

     最后值得一提的,先看代码:

(write (* 2 3));这行代码会打印出乘法结果6,而如果要打印出(* 2 3),也就是不进行求值,那可以通过以下代码实现

(write ' (* 2 3));没错,就是加一个单引号在前面~~其实想实现这个功能还有一种办法的

(format t "(* 2 3)");最传统的打印字符串的好吧,其实也就是打印原子或列表的字面结果。

三、LISP—数据类型

   类型说明符是数据类型的系统定义的符号。

array fixnum package simple-string
atom float pathname simple-vector
bignum function random-state single-float
bit hash-table ratio standard-char
bit-vector integer rational stream
character keyword readtable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值