InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法

InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法

ID:41322743

大小:245.31 KB

页数:11页

时间:2019-08-22

InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法_第1页
InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法_第2页
InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法_第3页
InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法_第4页
InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法_第5页
资源描述:

《InductivelyDefinedDataConcreteandAbstractsyntax电感定义的数据具体和抽象语法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、InductivelyDefinedData ConcreteandAbstractsyntaxKarlLieberherrDon’tbelievethewordsConcretesyntaxmaybemoreabstractthanabstractsyntax!!!BothAbstractandConcreteExp::=Identifiervar-exp(id)::=“(lambda”“(“Identifier”)”Exp”)”lambda-exp(idbody)::=“(“Exp“(“Exp“)”“)”app-exp(ratorrand)page49ofEOPL2:(repla

2、ceExpbyExpression,capitalizeinsteadofangle)BothAbstractandConcreteExp::=Idvar-exp(id)::=“(lambda”“(“Id”)”Exp”)”lambda-exp(idbody)::=“(“Exp“(“Exp“)”“)”app-exp(ratorrand)(define-datatypeExpExp?(var-exp(idId?))(lambda-exp(idId?)(bodyExp?))(app-exp(ratorExp?)(randExp?)))page49ofEOPL2:(ExpbyExpressi

3、on,IdbyIdentifier,capitalizeinsteadofangle)RepresentIdassymbolExp::=Idvar-exp(id)::=“(lambda”“(“Id”)”Exp”)”lambda-exp(idbody)::=“(“Exp“(“Exp“)”“)”app-exp(ratorrand)(define-datatypeExpExp?(var-exp(idsymbol?))(lambda-exp(idsymbol?)(bodyExp?))(app-exp(ratorExp?)(randExp?)))page49ofEOPL2:(ExpbyExpr

4、ession,IdbyIdentifier,capitalizeinsteadofangle)cases(defineoccurs-free?(lambda(varexp)(casesExpe(var-exp(id)(eqv?idvar))(lambda-exp(idbody)and(not(eqv?idvar))(occurs-free?varbody)))(app-exp(ratorrand)(or…))))))Exercisesfordefine-datatypeArithmeticexpressions(*(+35)7)twoargumentsonlyincludeevalu

5、atorNestedcontainersExercise:TestdatatypeContainsinfirstaLambdaexpressionlambda-expandinsecondanApplicationapp-exp.Wouldlikesomethinglike:(define-structTest(first;;typelambda-expsecond;;typeapp-exp)butwiththedynamiccheckingbenefitofdefine-datatype.BetterWay:variantsarefirstclassExp::=Idvar-exp(

6、id)::=“(lambda”“(“Id”)”Exp”)”lambda-exp(idbody)::=“(“Exp“(“Exp“)”“)”app-exp(ratorrand)(define-datatypeExpExp?(var-exp(idsymbol?))(lambda-exp(idsymbol?)(bodyExp?))(app-exp(ratorExp?)(randExp?)))Betterway:Exp:VarExp

7、LambdaExp

8、AppExp.VarExp=Id.LambdaExp=“(lambda”“(“IdExp“)”.AppExp=“(“

9、tor>ExpExp“)”.Test=LambdaExpAppExp.Eachnon-terminaldefinesadatatype.Concernanalysis(define(checkac)(local(;;Container->Number;;theweightofacontainer;;effect:thenumberofcapacityviolationsinacontainer(define(wei

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。