scheme 学习:pair 和 list
;pair;cons可以用于构建pair,如(cons 1 2)->(1 . 2);car获得pair中的first,cdr获得pair中的second;(car (cons 1 2))->1 (cdr (cons 1 2))->2;(cons 1 (cons 2 3))->(1 2 . 3)这是scheme输出pair时候的一种简略形式;实际上述pair的first是1,second是(2 . 3) ;类似的(cons 1 (cons 2 (cons 3 4)))->(1 2 3 . 4);实际的存储形式是(1 . (2 . (3 . 4)));list;list也是一种pair,其first可以是任意类型,second或是一个pair或是nil;用以表示list的结尾;例如:(list 1)->(1) first:1 second:nil;(list 1 2 3 4)实际上由(cons 1 (cons 2 (cons 3 (cons 4 nil))))构造出来;也就是说(list 1 2 3 4)的输出实际上跟(1 2 3 4 . nil)是等价的,但是当最后一个;元素是nil时在输出中可以被省略,所以(list 1 2 3 4)的实际输出是(1 2 3 4);append;用于将两个list合成一个list,例如(append '(1) '(2 3))->(1 2 3);比较(cons '(1) '(2 3))->((1) 2 3) (cons 1 '(2 3))->(1 2 3);可一得到append的一种实现方式 (define (append list1 list2)(if (null? list1)list2(cons (car list1) (append (cdr list1) list2))))
转载于:https://www.cnblogs.com/sniperHW/archive/2013/05/29/3106266.html
scheme 学习:pair 和 list相关推荐
- scheme 学习:红黑树
这几天继续学习scheme,scheme中虽然有hashtable但没有类似C++中的map,于是把C版本中的红黑树移植到scheme(中间也发现了C版本中的一些问题,暂时懒得调整了^()^) 以作为 ...
- Scheme学习系列二:调用C代码
1.test.scm ;;1.declare include (c-declare #<<c-declare-end #include <stdio.h> c-declare- ...
- Scheme学习系列O:启动篇
Gambit下载地址 如果你也在陶冶情操闲暇时以SICP为乐,那必须先利其器 1. Structure and Interpretation of Computer Programs <计算机程 ...
- Scheme学习系列一 :源码安装Gambit
0.配置需要环境 # sudo apt-get install libusb-dev usbutilslinux上安装mingwin # sudo apt-get install mingw32下载地 ...
- 开始学习Scheme
开始学习Scheme 函数式编程(Functional Programming)是在MIT研究人工智能(Artificial Intelligence)时发明的,其编程语言为Lisp.确切地说,Lis ...
- .NET DLR 上的IronScheme 语言互操作IronScheme控制台输入中文的问题
前言 一直以来对Lisp语言怀有很崇敬的心里,<黑客与画家>对Lisp更是推崇备至,虽然看了不少有关Lisp的介绍但都没有机会去写段程序试试,就像我对C++一样,多少有点敬畏.这个周末花了 ...
- GitHub 上这个「计算机科学」自学指南火了!
公众号关注 "GitHubPorn" 设为 "星标",每天带你逛 GitHub! 作者:Ozan Onay.Myles Byrne 译者:Keith Null ...
- 自学计算机科学,你需要这份指南
相信经常看我的Github排行榜的朋友,最近会发现有一个项目经常上热门,TeachYourselfCS-CN,看名字就知道,这是一个教你自学计算机的项目,原作者为Ozan Onay和Myles Byr ...
- 【论文总结】Few-shot Object Detection via Feature Reweighting(附翻译)
Few-shot Object Detection via Feature Reweighting基于特征重加权的小样本目标检测 论文地址:https://arxiv.org/abs/1812.018 ...
最新文章
- Label的作用是什么?是怎么用的?
- R语言可视化包ggplot2绘制饼图(pie chart)实战
- c++ volatile关键字
- loadrunner 11 下载地址
- ES6新特性5:类(Class)和继承(Extends)
- (译)如何用命令行在windows Azure上安装负载平衡的web Farm虚拟机(linux或其他)...
- java.lang object math string,面向对象知识点回顾
- openssl NDK 交叉编译
- 加速时光,让你永远70岁的「变老神器」FaceAPP突然爆红,却恐遭美国封杀
- ajax 原理----初级篇
- wordpress php 链接,WordPress中获取页面链接和标题的相关PHP函数用法解析
- python结构模式图_NetworkX:Python图与网络模型基础
- 高职对计算机课程要求,高职计算机课程对学生编程能力培养.doc
- 短视频解析技术原理,去水印原理分析整理汇总
- 台达DVP50MC11T与威纶触摸屏ModbusTCP通信
- iOS8 web下载ipa install App via OTA
- 史上最全的工控类软件链接 快收藏备用吧
- 离散数学:主范式(主析取范式、主合取范式)
- 流量魔盒FlowBox 发行的代币是DMC骗局分析
- SUSE LINUX 10.1如何ADSL上网指南(转)