CWCL 0.1:Lisp的样子

2 篇文章 0 订阅

首先,我们来看几个 hello world 例子:

  • 示例 1. 打印5行helloworld

英语:print 5 line "hello world"

Lisp:(print 5 line "hello world")(打印 5 行 "hello world")

  • 示例 2. 字符串"hello world"

英语:the string "hello world"

Lisp:(the string "hello world")#T(字符串 "hello world")

  • 示例 3. John 说:“hello world”

英语:"hello world," John said

Lisp:(say :by John "hello world")#P(John say "hello world")(John 说 "hello world")

看到这里,或许有人已经把上面的例子在lisp实现中试了下,然后遇到了一堆错误。并不是我捉弄大家,上面那些确实可以作为Lisp语言的程序,只不过各位手上的Lisp实现还处于幼儿状态,未觉醒相关技能。(后面会告诉大家怎么让Lisp实现理解这些话语,如果用作弊手法的话,每个例子不超过10行代码)

好了,言归正传,下面附上能运行的 hello world:

(print "hello world")

我们可以看到上述的Lisp程序都有个普遍的特征:都是 (xxx ......) 这样的括号包含符号形式。这里需要说明下,Lisp被是表处理的缩写,这里括号包起来的就是表,例如,(1 2 3 4) 就是说一个表,包含元素1、2、3、4,而空表就是()。Lisp的程序就是由这样的表组成,换句话说,任何可以用这样的表来表示的都可以成为Lisp程序。

可能有人会注意到,有些符号是say这样的单词,而有些就是:by这样前面带有特殊符号的单词,后期我们还会看到例如test-var*global-var*这样的多个单词组成的、带有前后缀的符号,这些并不是Lisp的语法的要求,而是人为约定的一种命名规范。

另外还有像#P(...)还有#Y[...]这类表达方式,这是Lisp实现提供的扩展语法的机制,后期详细介绍。

所以,从上面的例子可以看出,Lisp的样子是多变的,它可以是任何你想象中可以用表来表示的样子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值