版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机编程与数据WaystoDesignProgramsThinkaboutwhatyouwanttodo,andturnthatintocode.Thinkaboutwhatyouneedtorepresent,anddesignyourcodearoundthat.Whichisbetter?HistoryofSchemeScheme[GuySteele&GerrySussman,1975]GuySteeleco-designedSchemeandcreatedthefirstSchemeinterpreterforhis4thyearprojectMorerecently,SteelespecifiedJava[1995]“Conniver”[1973]and“Planner”[1967]BasedonLISP[JohnMcCarthy,1958]BasedonLambdaCalculusAlonzoChurch,1930sLastfewlecturesincourseLISP“LotsofInsipidSillyParentheses”“LISt
Processinglanguage”Listsareprettyimportant–hardtowriteausefulSchemeprogramwithoutthem.MakingLists(列表)MakingaPair>(cons12)(1.2)consconstructsapair12SplittingaPair>(car(cons12))1>(cdr(cons12))2carextractsfirstpartofapaircdrextractssecondpartofapair12carcdrWhy“car”and“cdr”?Original(1950s)LISPonIBM704Storedconspairsinmemoryregisterscar=“ContentsoftheAddresspartoftheRegister”cdr=“ContentsoftheDecrementpartoftheRegister”(“could-er”)Doesn’tmatterunlessyouhaveanIBM704Thinkofthemasfirstandrest(definefirstcar)(definerestcdr)(TheDrScheme“PrettyBig”languagealreadydefinesthese,buttheyarenotpartofstandardScheme)Implementingcons,carandcdr(define(consab) (lambda(w)(ifwab)))(define(carpair)(pair#t)(define(cdrpair)(pair#f)Schemeprovidesprimitiveimplementationsforcons,car,andcdr.But,wecoulddefinethemourselves.Pairsarefine,buthowdowemakethreesomes?Triple(三元组)
Atripleisjustapairwhereoneofthepartsisapair!(define(tripleabc)(consa(consbc)))(define(t-firstt)(cart))(define(t-secondt)(car(cdrt)))(define(t-thirdt)(cdr(cdrt)))Quadruple(四元组)
Aquadrupleisapairwherethesecondpartisatriple(define(quadrupleabcd)(consa(triplebcd)))(define(q-firstq)(carq))(define(q-secondq)(t-first(cdrt)))(define(q-thirdt)(t-second(cdrt)))(define(q-fourtht)(t-third(cdrt)))Multuples
(多元组)AquintupleisapairwherethesecondpartisaquadrupleAsextupleisapairwherethesecondpartisaquintupleAseptupleisapairwherethesecondpartisasextupleAnoctupleisgroupofoctupiA?isapairwherethesecondpartisa…?ListsList::=(consElement
List)Alistisapairwherethesecondpartisalist.Onebigproblem:howdowestop?Thisonlyallowsinfinitelylonglists!ListsList::=(consElement
List)List::=Alistiseither:apairwherethesecondpartisalistor,emptyIt’shardtowritethis!NullList::=(consElement
List)List::=Alistiseither:apairwherethesecondpartisalistor,empty(null)nullListExamples>null()>(cons1null)(1)>(list?null)#t>(list?(cons12))#f>(list?(cons1null))#tMoreListExamples>(list?(cons1(cons2null)))#t>(car(cons1(cons2null)))1>(cdr(cons1(cons2null)))(2)RecapAlistiseither:apairwherethesecondpartisalist ornull(note:bookusesnil)Pairprimitives:(consab) Constructapair<a,b>(carpair) Firstpartofapair(cdrpair) SecondpartofapairProblemSet2:
(课后作业)ProgrammingwithDataRepresentingacardcarcdrPairofrank(Ace)andsuit(Spades)ProblemSet2:
(课后作业)ProgrammingwithDataRepresentingaca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备、工艺设计管线保温施工组织方案
- 中等职业学校电子商务.专业标准
- 核心筒结构施工方案
- 大客户销售管理策略
- 物联网安全规范解读与应用
- 新华人寿康健华贵 A 款医疗保险利益条款
- 电力设备及新能源行业新能源与AI展望:海外户储预期向好电网投资有望超预期
- 关于公立医院预算管理的思考
- 2026年一级消防工程师消防安全技术实务练习题库及答案
- 2026年高考甲卷理科综合考试全国模拟试卷
- 智慧树知到《中国传统文化与中医学(山东中医药大学)》2025章节测试附答案
- 清除危岩安全教育
- 职业技能大赛-绿化工理论知识题库(附参考答案)
- 江西省工业废水铊污染物排放标准-编制说明
- 预制菜创业计划书
- 电工(五级)理论知识考核要素细目表
- 小学道德与法治课评分表
- A级锅炉部件制造质量手册
- 造价咨询重点、难点及控制措施
- 阀门基础知识培训课件
- 教学设计 大自然的语言 全国公开课一等奖
评论
0/150
提交评论