【SICP练习】10 练习1.34

练习1.34

这道题我一开始不用Edwin的时候觉得是会陷入无限循环之中。后来在Edwin上试了一下才发现会报错,输出如下:

(f f)

;The object 2 is not applicable.

;To continue, call RESTART with an option number:

;  (RESTART 2) => Specify a procedure to use in its place.

;  (RESTART 1) => Return to read-eval-print level 1.

; Start debugger? (y or n):

我们先按地41页的描述,将函数f用lambda和define写出来。

(define f (lambda (g) (g 2)))

当我们用f作为参数传入f函数中的时候,编译器将与f关联的lambda表达式传入函数f,如下:

(f f)

(f (lambda (g) (g 2)))

此时参数已经具备了,编译器又会将lambda表达式传入f函数中,也就是和f相关的lambda表达式中的g。

((lambda (g) (g 2)) (lambda (g) (g 2)))

此时后者返回2,随后前者也得出2。最终就是(2 2)了,但是2并不是一个函数,而编译器尝试着找出和2关联的lambda表达式。尝试无果,便返回”The object 2 is not applicable.”。

时间: 2024-11-05 01:01:45

【SICP练习】10 练习1.34的相关文章

SICP 1.10

> 解:这道题有前提条件:x==0 || y==0 || y==1 || (x>0 && y >1) (A 1 10)==1024 (A 2 4)==65536 (A 3 3)==65536 n>=0 (f n)=2*n (g n)=2的n次方 (h n)=h(n)=2的h(n-1)次方,其中h(1)=2,h(0)=0:或 解题技巧:阅读完整个题目,可以肯定是有规律可循的.采用顺推的方式,如先求(A 1 1),再(A 1 2) (A 1 3) .... SICP 1

20145207 《Java程序设计》第10周学习总结

教材知识汇总 13.1 网络概述 13.1.1计算机网络概述 网络编程的实质:两个(或多个)设备(例如计算机)之间的数据传输. 计算机网络的定义:通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含的设备有:计算机.路由器.交换机等等. 网络最主要的优势在于共享:共享设备和数据. IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的

20145239杜文超 《Java程序设计》第10周学习总结

20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机网络概述 (1)路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤.网线等连接将设备连接起来,从而形成了一张巨大的计算机网络. (2)网络最主要的优势在于共享:共享设备和数据,现在共享设备最常见的是打印机. (3)IP地址:为了能够方便的识别网络上的每个设备,网络中的每个设备

20155208徐子涵 2016-2017-2 《Java程序设计》第10周学习总结

#### **教材学习总结**网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴. **基础知识** 为了能够方便的识别网络上的每个设备,网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址.在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成,例如10.0.120.34.每个接入网络的计算机都拥有唯一的IP地址,这个IP地

第10周学习总结

20145339顿珠达杰 Java第10周学习总结 教材学习内容总结 网络编程 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 计算机网络 路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤.网线等连接将设备连接起来,从而形成了一张巨大的计算机网络. 共享 网络最主要的优势在于共享:共享设备和数据,现在共享设备最常见的是打印机. IP地址 对于网络编程来说,最主要的是计算机和计算机之间的通信,这样首要的问题就是如何找到网络上的计算机呢?这就需

Hadoop2.6.0 + Spark1.4.0 在Ubuntu14.10环境下的伪分布式集群的搭建(实践可用)

前言,之前曾多次搭建集群,由于疏于记录,每次搭建的时候到处翻阅博客,很是费劲,在此特别记录集群的搭建过程. 0.环境:Ubuntu14.10.Hadoop2.6.0.spark-1.4.0 1.安装jdk1.7 (1)下载jdk-7u25-linux-i586.tar.gz: (2)解压jdk-7u25-linux-i586.tar.gz,并将其移动到 /opt/java/jdk/路径下面 (3)配置java环境变量: 在 /etc/profile文件中追加 #set java env expo

nginx日志中得到访问量最高前10个IP

~ cat access.log.10 | awk '{a[$1]++} END {for(b in a) print b"\t"a[b]}' | sort -k2 -r | head -n 10 163.177.71.12   972 101.226.68.137  972 183.195.232.138 971 50.116.27.194   97 14.17.29.86     96 61.135.216.104  94 61.135.216.105  91 61.186.190

20145310 《Java程序设计》第10周学习总结

20145310 <Java程序设计>第10周学习总结 教材学习内容总结 网络概述 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴.在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可. 网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址.在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数

zookeeperr3.4.5+tomcat7+solr-4.10.1分布式集群搭建

一.   说明 本次分布式部署solr是在两台服务器(10.21.16.31和10.21.16.34)上部署5个结点,10.21.16.31服务器部署3个结点,10.21.16.34服务器部署2个结点 二.   下载需要的工具包 zookeeper-3.4.5.tar.gz,tomcat-7.0.50.tar.gz,solr-4.10.1.tgz(jdk必须是7,可以使用系统自带的openJDK) 三.   添加用户 分别在两台服务器上添加solr用户 useradd  solr passwd