The differentiation program with abstract data
#!r6rs
( import ( rnrs base ( 6 ) )
( rnrs io simple ( 6 ) ) )
( define ( deriv exp var )
( define ( variable? x )
( symbol? x ) )
( define ( =number? exp num )
( and ( number? exp )
( = exp num ) ) )
( define ( same-variable? x1 x2 )
( and ( variable? x1 )
( variable? x2 )
( eq? x1 x2 ) ) )
( define ( make-sum a1 a2 )
( cond ( ( =number? a1 0 )
a2 )
( ( =number? a2 0 )
a1 )
( ( and ( number? a1 )
( number? a2 ) )
( + a1 a2 ) )
( else
( list '+ a1 a2 ) ) ) )
( define ( make-product m1 m2 )
( cond ( ( or ( =number? m1 0 )
( =number? m2 0 ) )
0 )
( ( =number? m1 1 )
m2 )
( ( =number? m2 1 )
m1 )
( ( and ( number? m1 )
( number? m2 ) )
( * m1 m2 ) )
( else
( list '* m1 m2 ) ) ) )
( define ( sum? x )
( and ( pair? x )
( eq? ( car x ) '+ ) ) )
( define ( addend s )
( cadr s ) )
( define ( augend s )
( caddr s ) )
( define ( product? x )
( and ( pair? x )
( eq? ( car x ) '* ) ) )
( define ( multiplier p )
( cadr p ) )
( define ( multiplicand p )
( caddr p ) )
( cond ( ( number? exp ) 0 )
( ( variable? exp )
( if ( same-variable? exp var ) 1
0 ) )
( ( sum? exp )
( make-sum ( deriv ( addend exp ) var )
( deriv ( augend exp ) var ) ) )
( ( product? exp )
( make-sum ( make-product ( multiplier exp )
( deriv ( multiplicand exp ) var ) )
( make-product ( deriv ( multiplier exp ) var )
( multiplicand exp ) ) ) )
( else
( error "unknown expression type: DERIV" exp ) ) ) )
The differentiation program with abstract data的更多相关文章
- ADT(abstract data types)抽象数据类型
1.What is it? An abstract data type is a set of objects together with a set of operations. 抽象数据类型是带有 ...
- 20182320《Program Design and Data Structures》Learning Summary Week9
20182320<Program Design and Data Structures>Learning Summary Week9 1.Summary of Textbook's Con ...
- Rocket - debug - TLDebugModuleInner - Abstract Data
https://mp.weixin.qq.com/s/DOLkEi-_qQt6lWOhJ2hxVQ 简单介绍TLDebugModuleInner中抽象数据寄存器的实现. 1. abstractData ...
- STM8S——Flash program memory and data EEPROM
1.简介 STM8S内部的FLASH程序存储器和数据EEPROM是由一组通用寄存器来控制的:所以我们可以通过这些通用寄存器来编程或擦除存储器的内容.设置写保护.或者配置特定的低功耗模式.我们也可以自己 ...
- Abstract Data Types in C
Interface declares operations, not data structure Implementation is hidden from client (encapsulatio ...
- Abstract Data Type
- 20162314 《Program Design & Data Structures》Learning Summary Of The Fifth Week
20162314 2017-2018-1 <Program Design & Data Structures>Learning Summary Of The Fifth Week ...
- detect data races The cost of race detection varies by program, but for a typical program, memory usage may increase by 5-10x and execution time by 2-20x.
小结: 1. conflicting access 2.性能危害 优化 The cost of race detection varies by program, but for a typical ...
- Core Java Volume I — 3.3. Data Types
3.3. Data TypesJava is a strongly typed language(强类型语音). This means that every variable must have a ...
随机推荐
- git clone的
git clone git@e.coding.net:wudi360/*******.git
- Delphi XE增强的RTTI妙用--动态创建包中的窗口类
以前要在运行时创建package中的form类,必须要在form单元文件中这样注册类: Initialization RegisterClass(TForm3);Finalization UnRe ...
- 20165301 2017-2018-2 《Java程序设计》第二周学习总结
20165301 2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二章:基本数据类型与数组 标识符 第一个字符不能是数字 不能是关键字 不能是true.fa ...
- AC日记——[CQOI2009]DANCE跳舞 洛谷 P3153
[CQOI2009]DANCE跳舞 思路: 二分+最大流: 代码: #include <cstdio> #include <cstring> #include <iost ...
- Android之 内容提供器(1)——使用内容提供器访问其它程序共享的数据
(下面内容是阅读郭霖大神的<第一行代码>总结的) 1 概述 内容提供器是Android实现跨程序共享数据的标准方式. 内容提供器的的使用方法有两种, 一是使用已有的内容提供器对其他程序的数 ...
- JSTL-3
.循环标签:forEach标签, forTokens标签 <c:forEach>:标签:该标签根据循环条件遍历集合(Collection)中的元素 <c:forEach [var=& ...
- Web应用安全审计工具WATOBO
Web应用安全审计工具WATOBO WATOBO是一款Web应用程序安全测试工具.该工具使用代理方式,对Web会话数据进行审计.它是一款半自动化工具,可以自动对请求和响应进行分析,找出潜在漏洞信息 ...
- Vue 2.0学习(五)v-bind及class与style绑定
DOM元素经常会动态地绑定一些class类名或style样式. 基本用法 <div id="app"> <a v-bind:href="url" ...
- socket的使用一
socket概念 socket层 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协 ...
- C和指针之学习笔记(4)
第9章 字符串 字符串的输入与输出 int ch; char strings[80]; FILE *input; (1)scanf(“%c”,&ch); printf(“%c \n” ...