SICP 习题2.60 允许元素重复,重构集合操作

SICP-Python版本(1.7) 因为无意中看见有人推荐的伯克利的这本教材,使用python教SICP,感觉使用起来更得心应手,毕竟scheme的括号太多用起来不习惯…虽然python不能支持所有的FP特性,但是作为一个初学者,让自己学起来有兴趣才是最重要的,以后全部都用Python来做啦!(1)(1)首先用python实现一个抽象的Product,并用来定义一个计算PI4=23434565....\frac{PI}{4} = \f 阅读详情
element-of-set? 和intersection-set的复杂度急剧上升,而adjoin-set和union-set的复杂度下降了一个O(n)。
在adjoin-set操作和union-set操作比较多,element-of-set?和intersection-set操作比较少的时候
(define (element-of-set? x set)
  (cond ((null? set) false)
        ((equal? x (car set)) true)
        (else (element-of-set? x (cdr set)))))

(define (adjoin x set) (cons x set))

(define (intersection-set set1 set2)
  (cond ((or (null? set1) (null? set2)) '())
         ((element-of-set? (car set1) set2)
          (cons (car set1)
                (intersection-set (cdr set1) set2)))
         (else (intersection-set (cdr set1) set2))))

(define (union-set set1 set2)
  (append set1 set2))

(define s1 '(2 3 2 1 3 2 2))
(define s2 '(9 2 3 4 8 10))

(newline)
(display (intersection-set s1 s2))

(newline)
(display (union-set s1 s2))
Scheme与SICP如何重塑程序员的思维内核 编程本质是计算过程的抽象表达,其核心在于问题建模、逻辑分解与状态管理。从图灵机到Lambda演算,函数式范式揭示了‘一切皆表达式’的底层统一性。Scheme作为最精简的Lisp方言,以极小语法集承载宏系统、尾递归优化和延续传递风格(CPS)等关键能力;而SICP则通过流、元循环解释器等概念,将抽象机制具象为可推演、可验证的工程实践。这种理论与实操的深度咬合,使开发者得以在CRUD洪流中重建计算直觉——尤其适用于需高可靠性、强可维护性的电信级业务系统,如SP短信平台的规则引擎构建。本文即基于真实工业场景,展现 阅读详情

相关推荐

Devin实战手记:用AI工程师重构函数式TypeScript练习项目

AI编程代理(如Devin)本质上是面向真实代码上下文的自动化协作者,其核心能力依赖于存量项目的结构密度、测试闭环与可验证演进路径。它并非替代开发者,而是将重复性技术债清理(如依赖升级、路径迁移、工具链替换)转化为可审计、可中断、可追溯的标准化动作流。关键技术价值在于降低‘已知流程’的执行成本——例如fp-ts版本迁移中自动识别lib/Option→Option路径变更、同步修正import链、生成带验证逻辑的PR描述。典型应用场景包括教学仓库现代化、遗留TS项目ESM适配、CI/CD脚本补全等需强上下文理

467

递归与迭代计算过程的本质区别:从SICP理解计算模型

递归和迭代是程序设计中最基础的两种计算模式,但其本质差异常被语法表象掩盖。真正决定性能与可扩展性的,是解释器或编译器如何执行——即‘递归计算过程’(栈空间线性增长)与‘迭代计算过程’(固定空间状态转移)的根本分野。尾递归并非语法技巧,而是将调用链显式重构为有限状态更新的关键范式;树形递归则直观暴露了重叠子问题与指数复杂度的风险。这些概念直接关联算法优化、内存安全及并发设计,在动态规划、滑动窗口、表达式求值等工程场景中持续发挥底层指导价值。本文基于SICP 1.2.1–1.2.2核心思想,解析递归过程、尾递归

didi9310的博客 498

Scheme编程思想:从λ演算到现代工程实践

编程语言的本质是什么?λ演算作为图灵完备的代数化计算模型,揭示了函数、数据与变换的统一性。它不依赖内存地址或硬件指令,而是以函数抽象、高阶组合和行为契约为基石,支撑起从JavaScript闭包、React虚拟DOM到Rust所有权系统的现代软件设计。Scheme作为最贴近λ演算的实用语言,用极简语法(仅七条规则)剥离工程幻觉,迫使开发者直面‘什么是数字’‘什么是状态’‘什么是接口’等根本问题。这种对计算本质的溯源训练,显著提升抽象能力、架构设计水平与跨语言学习效率——尤其在函数式编程、领域建模与元编程场景中

as2886089的博客 334

SICP练习题 1.7~1.8

<br /> 1.7 mysqrt的改进<br />改善精度控制的细节, 判断如果连续两次迭代的猜测值相差很小, 就退出. 实验表明达到效果了, 大数和小数都得到了很大改善.<br />美中不足是我还不会用变量, get-guess-result方法被重复调用了.<br />(define (mysqrt x) (define default-guess 1.0) (define min-dx 0.000000001) (define (get-guess-result guess )

dulao5的专栏 597

多阶段图像生成技术:渐进式承诺与交互设计

多阶段图像生成技术通过分阶段决策机制(如视角选择、构图编辑等)重构了传统AI图像生成的交互范式。其核心原理基于潜在扩散模型(LDM)和渐进式承诺理论,采用阶段解耦、状态持久化等技术实现各创作维度的独立控制。这种架构在保持生成质量(CLIP评分≥0.82)的同时,将编辑响应时间压缩至800ms内,显著提升了设计探索效率。典型应用涵盖插画创作、室内设计等领域,支持非线性的工作流和混合编辑策略。关键技术突破包括跨阶段干扰抑制和实时性优化,使得用户驱动操作占比提升113%,建构性操作增长312%。该技术特别适合需要

weixin_30832143的博客 454

人在环中(HITL):构建可干预、可追溯、可进化的AI生产系统

人在环中(Human-in-the-Loop,HITL)是一种将人类判断深度嵌入机器学习推理链路的工程范式,其核心原理是通过实时干预、结构化反馈与闭环学习,提升模型在真实场景中的鲁棒性与可解释性。相比传统‘事后审核’,HITL强调决策过程的可插拔性与信号可编程性,技术价值在于平衡自动化效率与业务风险控制,尤其适用于医疗诊断、金融风控、工业质检等高后果场景。它天然支撑模型置信度校准、反馈驱动的增量训练和多维可解释输出,是AI从实验室指标走向生产环境可靠性的关键跃迁。本文聚焦HITL的架构选型、系统实现与参数调

448

别再写for循环了,都是坏味道

昨天实战营里的G同学提交的代码有这么一段,被我专门圈出来讨论:

weixin_45189747的博客 301

技术人的知识索引思维:从信息搬运工到知识架构师

在软件开发领域,‘知识管理’远不止于收藏书单或笔记,其本质是构建可检索、可演进、可验证的个人认知系统。核心在于理解知识的分层结构——底层是计算本质(如抽象、状态机),中层是系统认知(如缓存、虚拟内存、并发模型),上层才是框架语法与API细节。这种结构决定了技术能力的迁移性与抗衰性:吃透《计算机程序的构造与解释》中的高阶函数思想,能自然迁移到.NET的中间件委托链设计;掌握《深入理解计算机系统》的局部性原理,可直接优化LINQ查询与List<T>内存访问模式。知识索引的价值,正在于将离散经验锚定到这些通用原理

unixboy 509

构建技术认知体系:从计算机基础到系统设计的九本经典书单

在软件开发和系统架构领域,深入理解计算机科学的核心原理是构建稳固技术认知体系的关键。计算本质、数据抽象、系统思维等基础概念构成了技术理解的基石,其价值在于帮助开发者穿透技术表象,掌握底层逻辑。从编码、存储、处理信息的基本原理,到分布式系统、数据密集型应用的设计法则,这些知识为解决高并发、一致性、可扩展性等工程挑战提供了理论框架。通过结合《计算机程序的构造和解释》等经典著作中的思维模型与《设计数据密集型应用》中的架构模式,技术人员能够将理论转化为应对微服务、事件驱动等现代架构场景的实践能力,从而在技术选型、系

weixin_30703911的博客 651

张量分解神经网络硬件加速器设计与优化实践

张量分解作为深度学习模型压缩的核心技术,通过将高维权重张量分解为低秩核序列,显著降低模型参数量。其数学本质是高维矩阵运算的降维表示,在硬件实现时转化为特定维度的GEMM操作。这种技术在边缘计算场景具有独特价值,能实现大型神经网络在资源受限设备的高效部署。本文重点探讨张量化神经网络(TNN)的硬件加速器设计,针对传统部署中存在的收缩路径选择、硬件架构适配和数据流映射三大挑战,提出统一设计空间构建、全局延迟驱动搜索和参数化硬件内核等创新方案。通过FPGA上的实验验证,在ResNet18和ViT-Ti/4等模型上

373

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 341

上场的几句话

从大二开始学计算机,到现在过三年,还是无知。买过很多的书,比如《计算机程序设计艺术》1、3卷,现代编译程序设计,UNIX操作系统设计,重构,敏捷软件开发,设计模式,TCP/IP详解,等等。认真读过的,却很少;认真读过而真正有所收获的,更少。一直在看这本书:Structure and Interpretation of Computer Programs (SICP),电子版,http://

关于计算机的一些 702

解决 TensorFlow 和 Keras 的 Python 版本兼容问题:详细技术指南

本文提供了TensorFlow和Keras与Python版本不兼容问题的完整解决方案。通过版本对照表指出不同TensorFlow版本对应的Python支持范围,强调2.13.x仅支持Python 3.9-3.11,且不兼容Python 3.12+。给出最佳实践建议:使用虚拟环境管理项目依赖,推荐venv或conda创建独立环境;指导正确安装TensorFlow和Keras版本,建议优先使用tf.keras避免冲突;针对常见报错如DLL加载失败、模块导入错误等提供具体解决方法。最后给出一个在兼容环境中运行的M

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1663

Python 的类与对象系统底层是如何实现的?CS61A Composing Programs 中文教程带你一次搞懂

**composing-programs-zh** 是伯克利大学 CS61A 经典教材《Composing Programs》(《构造程序要素》,SICP 的 Python 版本)的中文翻译项目。它不仅是一份中文文档,更是一本带你从"使用 Python 的人"转变为"语言设计者"的深度教程——尤其是其中"用纯函数和字典重新实现类与对象"的章节,是理解 Python 对象系统底层原理的最佳材料。

gitblog_00335的博客 324

腾讯云DBA面试(一面)

在第二阶段,根据RM返回的结果,如果涉及分布式事务的所有RM都返回可以提交, 则TM给RM发送commit的命令,每个RM实现自己的提交,同时释放锁和资源,然后RM反馈提交成功, TM完成整个分布式事务;根据事务所处的阶段,可以回滚到具体的版本,实现一致性。1.并发执行的事务,在prepare阶段,redo log先写文件缓存,第一个领头的事务,在等待n个事务后, 在第一个事务去刷写磁盘时,会把同组的其他的事务,也一起刷写到磁盘上,这样就减少了刷盘的次数,降低了磁盘的IOPS。分布式锁是怎么实现的?

u012565458的博客 1977

C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现(史上最全)

本文详细介绍了Socket通信中多个异步Udp客户端功能的实现、介绍如何使用多个客户端与多个服务器进行数据的交互,包含连接服务器、断开服务器、发送数据、读取数据、C#代码实现,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 1981

强烈推荐10本程序员必读的书

强烈推荐10本程序员必读的书

2501_93178964的博客 440

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box。

成长需要沉淀。 397

程序员的自我修养

从知乎整理的如何转行称为程序员的一些要点 成为程序员之前 多种方案实现一个功能,不要停在原地 敏捷开发流程 编码规范 不局限于一种语言 好程序员是好产品经理 不断重构 好开源框架是最好的老师 保持行业敏感度 算法、数据结构、计算机组成原理、一致性哈希、垃圾回收算法很重要 重复的事情变自动 不熬夜 提前想好三年内的目标 学会定位错误 想办法薪水过2w 保持谦逊,不必羡慕,做好自己该做的 喜欢上自...

JoyceYangya的博客 248

SPME/IP PPT详解

什么是中间件?它是操作系统与应用程序之间的一块代码,它对于应用程序提供了一些标准接口,屏蔽了应用程序与底层的一些交互,上层应用程序只要和中间件进行交互就可以了,这样就可以达到一个解耦的目的。SOMEIP其实是一个中间件,它是操作系统与应用程序之间的一段代码,它是可以运行在TCP/IP之上的,可以在很多平台上使用,可以适配较多的操作系统,可以提供很多接口。经过序列化之后,在网络上传输的是一些101010这样的二进制流。SOME/IP可以承接应用层的一些数据,进行打包放到传输层。

usstmiracle的博客 618

Unity最强动作战斗框架?Combat System Framework 深度解析

Combat System Framework 并不是一个简单的角色控制器,而是一套完整的动作游戏战斗开发框架。它借鉴了现代 AAA 游戏常见的架构思想,以 Gameplay Tag 为核心,结合 ScriptableObject 数据驱动设计,将技能、属性、Buff、伤害、武器、动画通知等系统有机整合在一起。同时,配套的可视化动画时间轴、Root Motion 工具和实时预览窗口,大幅优化了动作开发流程。当然,这套框架也有一定的学习门槛。

2403_88403568的博客 679

Lisp语言的软件工程

Lisp(LISt Processing)是一种历史悠久的编程语言,最早在20世纪50年代诞生。作为一种函数式编程语言,Lisp以其独特的语法和强大的表达能力在人工智能、符号处理等领域中得到了广泛应用。尽管近年来许多现代编程语言层出不穷,但Lisp依然在某些领域保持着其独特的地位,特别是在软件工程中。本文将探讨Lisp在软件工程中的应用、优势及其可能的挑战。

2501_90777075的博客 1677

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Professional Programming:最完整软件工程师学习资源宝典

> "给我六个小时砍树,我会花前四个小时磨斧头。" —— 亚伯拉罕·林肯 ## ???? 开篇:为什么你需要这个资源宝典? 在软件工程这个快速演进的领域,你是否经常感到: - ???? **知识过载**:新技术层出不穷,不知从何学起 - ???? **方向迷茫**:缺乏系统化的学习路径和优先级指导 - ⏰ **时间有限**:需要在有限时间内掌握最实用的技能 - ???? **质量参差**:网络资源良莠不...

gitblog_00240的博客 638

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

2014年总结

趁着春节前,写下2014年总结,记录下都做了什么,学到了什么,下一步该如何做。 生活 年初结婚了,和心爱的人在一起了。算是踏下心了。当然压力也随之而来,那种家庭的责任感受更加明显了。 年中的时候因为工作压力和生活习惯,导致菊花受罪了...在医院做了手术并修养了半个月。 然后总算是把借来的10W还完了,并且在春节前还还完了房子装修的钱。第一次买房,而且是给父母买的。感受下来就是累。...

dashishao9295的博客 175

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

为啥选Clojure? --- Robert C. Martin

为啥选Clojure? Why Clojure? --- by Robert C. Martin (Uncle Bob) 2019/8/22 原blog链接:http://blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html 主题:Clojure是最经济的编程语言 从汇编到Java,...

u013066264的专栏 242
上一篇: SICP 习题2.59 union-set操作
下一篇: SICP 习题2.61~2.62 排序表示的adjoin和union-set函数
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值