zoukankan      html  css  js  c++  java
  • 《how to design programs》13章用list构造表

    使用cons构造一个包含多个元素的表十分麻烦,因此scheme提供了list操作,该操作接受任意量的值作为输入以创建一个表,下面是扩展的语法:

    <prm>=list

    扩展的scheme值的集合是:

    <val>=(list  <val> ....      <val>)

    理解list表达式的一种简单方法是将它当做若干cons的简写,具体来说,就是
    (list exp1 expe2       .......... exp-n)

    看成如下:

    (cons exp1 (cons  .      (cons exp-n empty))

    下面是3个例子:

    (list 1 2)

    =(cons 1 (cons 2 empty))

    list不仅作用于值,也可以作用于表达式:

    (list  (+ 0 1) (+ 1 1))

    =(list 1 2)

    在创建表之前,scheme先计算表达式,如果表达式计算错误,表就不会被创建。

    (list (/ 1 0) (+ 1 1)

    简而言之,list的行为和scheme的其他基本操作完全一样。

    (list (cons 1 (cons 13 empty)))
    ='((1 13))

    '(1 2 3) 表示(list 1 2 3)

    '(a b c)这个简写表示了:

     (list 'a 'b 'c)

    更有意思的是:

    '(<html>
         (<title> My first web page)
       (<body> oh!)
    )

    代表了:
    (list '<html>
         (list '<title> 'My 'First 'page)
          (list '<body> 'oh!)

    )

    '(1 a 2 b 3 c) 回复list已经引号
     (list 1 'a 2 'b 3 'c)

  • 相关阅读:
    8月工作杂记
    好用的MarkDown编辑器
    Windows下遍历某目录下的文件
    Visual Assist 试用期过期怎么办?
    网易有道面试
    Windows操作系统C盘占用空间过多
    如果有一天我当了面试官
    matlab进行三维重建
    HBase , Doris
    《Java程序设计》第6周学习总结
  • 原文地址:https://www.cnblogs.com/youxin/p/3596812.html
Copyright © 2011-2022 走看看