首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对于clojure中的SICP问题,我做错了什么?

SICP(Structure and Interpretation of Computer Programs)是一本经典的计算机科学教材,它使用Scheme语言作为示例语言。虽然Clojure是一种与Scheme有相似语法的Lisp方言,但在解决SICP问题时可能会遇到一些困难和错误。

在处理SICP问题时,可能会犯以下一些常见错误:

  1. 语法错误:Clojure和Scheme之间存在一些语法差异,例如括号的使用和函数调用的方式。因此,在编写Clojure代码时,需要确保语法正确,特别是对于括号的匹配和函数调用的参数。
  2. 函数命名错误:SICP中的问题通常涉及到一些特定的函数,这些函数在Clojure中可能具有不同的命名。因此,在解决问题时,需要确保使用正确的函数名称。
  3. 数据类型错误:Clojure和Scheme之间存在一些差异的数据类型,例如列表和向量的表示方式。在解决SICP问题时,需要注意使用正确的数据类型来表示和操作数据。
  4. 算法错误:SICP问题通常涉及到一些复杂的算法和数据结构。在实现这些算法时,可能会犯一些错误,例如错误的递归终止条件或错误的循环逻辑。因此,在解决问题时,需要仔细思考和验证算法的正确性。

针对这些问题,可以采取以下措施来改正错误:

  1. 仔细阅读SICP教材:确保对问题的要求和解决方法有清晰的理解,理解问题的背景和目标。
  2. 学习Clojure语言:深入学习Clojure语言的语法和特性,了解其与Scheme的差异,熟悉常用的函数和数据类型。
  3. 调试和测试:在编写代码时,使用调试工具和单元测试来验证代码的正确性,尽早发现和修复错误。
  4. 参考文档和示例:查阅Clojure的官方文档和社区资源,寻找类似的问题和解决方案,学习其他开发者的经验和技巧。
  5. 练习和实践:通过解决更多的SICP问题和编写实际的Clojure应用程序来提升自己的技能和经验。

对于SICP问题的具体错误和解决方法,需要具体问题具体分析。如果提供具体的问题描述或代码示例,我可以给出更具体的帮助和建议。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

期望与痛:SICP

其实,在2013年,还在ThoughtWorks时,就曾经和同事一起整理了一份ThoughtWorks读书雷达,在编码实践象限推荐了SICP。...本书讲的是一些最基本问题,比如什么是计算、什么是抽象、什么是模块化、乃至什么是时间和什么是自然数。...有人不无夸张但相当在理地说:自SICP以降,无并发编程没有任何新鲜问题;如果你觉得自己有了新发现,要么是SICP已经写过只是你不知道,要么是你想错了。 这一段是熊节推荐。...应该在2014年,ThoughtWorks成都Office杨阳在Office开展了SICP系列Workshop,选用了clojure语言来尝试阐释书中理论和思想。...可惜当时出差在外,没有机会参与这个有趣活动。至今想来抱憾。 按:clojure一直想学却一直未学一门语言,而SICP一直想读却一直未读一本书。

1.8K60

给JAVA,说句公道话

看不出来JavaScript社区开那些会议,到底有什么意义,仿佛只是为了拉关系找工作。 Python凑合可以用在不重要地方,Ruby是垃圾,JavaScript是垃圾垃圾。...可是开始接触Scala没多久,就很惊讶发现,有些非常基本东西,Scala都设计错了。这就是为什么几度试图采用Scala,最后都不了了之。...他虽然对某些特定问题有一定深度,然而知识面其实不是很广,眼光比较片面。对于语言整体设计,把握不够好。...当Clojure最初“横空面世”时候,有些人热血沸腾地向我推荐。于是看了一下它设计者Rich Hickey宣传讲座视频。当时就对他一知半解拍胸脯本事,印象非常深刻。...甚至有人把SICP,The Little Schemer等名著里代码,全都用Clojure改写一遍,结果完全失去了原作简单和清晰。

75450

资深架构师谈Java——最牛逼编程语言

看不出来JavaScript社区开那些会议,到底有什么意义,仿佛只是为了拉关系找工作。 Python凑合可以用在不重要地方,Ruby是垃圾,JavaScript是垃圾垃圾。...可是开始接触Scala没多久,就很惊讶发现,有些非常基本东西,Scala都设计错了。这就是为什么几度试图采用Scala,最后都不了了之。...他虽然对某些特定问题有一定深度,然而知识面其实不是很广,眼光比较片面。对于语言整体设计,把握不够好。...当Clojure最初“横空面世”时候,有些人热血沸腾地向我推荐。于是看了一下它设计者Rich Hickey宣传讲座视频。当时就对他一知半解拍胸脯本事,印象非常深刻。...甚至有人把SICP,The Little Schemer等名著里代码,全都用Clojure改写一遍,结果完全失去了原作简单和清晰。

1.4K70

资深架构师谈Java——最牛逼编程语言Java超越了所有咒骂它“动态语言”Java“继承人”没能超越它Java没有特别讨厌地方结论程序员进阶方法

看不出来JavaScript社区开那些会议,到底有什么意义,仿佛只是为了拉关系找工作。 Python凑合可以用在不重要地方,Ruby是垃圾,JavaScript是垃圾垃圾。...可是开始接触Scala没多久,就很惊讶发现,有些非常基本东西,Scala都设计错了。这就是为什么几度试图采用Scala,最后都不了了之。...他虽然对某些特定问题有一定深度,然而知识面其实不是很广,眼光比较片面。对于语言整体设计,把握不够好。...当Clojure最初“横空面世”时候,有些人热血沸腾地向我推荐。于是看了一下它设计者Rich Hickey宣传讲座视频。当时就对他一知半解拍胸脯本事,印象非常深刻。...甚至有人把SICP,The Little Schemer等名著里代码,全都用Clojure改写一遍,结果完全失去了原作简单和清晰。

79040

组织哈工大技术兴趣讨论班心路历程

去年秋季学期还没开始时候,就在考虑技术兴趣讨论班计划——让对某方面技术感兴趣同学聚集在一起,定期轮流一些分享。...场地有了,线上讨论区有了,甚至有着很多美好设想:给各个技术社团提供线上讨论板块,线下活动场地,技术氛围搞起来啊。 2016年年,线上论坛已经搭差不多,咖啡店也已经装修完毕了。...选了参加SICP讨论班同学,有的甚至不清楚SICP说了个啥——那天SICP讨论班算上只有3个人参加,一个同学问我,“学这个语言有什么用”?说实话愣了一下。...虽然这个问题什么信心回答好,不过愣了一下不是因为这个,而是因为他们自己按照意愿选择书,居然不知道有什么用,也不知道讲了什么,就选了……回答说,这本书不是在讲lisp,是在介绍抽象,介绍“程序...中止SICP讨论班,因为真的没什么人;而对于CSAPP讨论班,订下了更严格规矩:有来不了,必须跟我请假;在下次课会对上次没来同学每人提一个问题。如果没跟我请假就不来了,那就不用来了。

31720

Clojure 运行原理之编译器剖析

解释型 SO 上有个问题 Is Clojure compiled or interpreted,根据本文开始部分官网引用,说明 Clojure 是门编译型语言,就像 Java、Scala。...LispReader.java 一般来说,具有复杂语法编程语言会把词法分析与语法分析分开实现为 Lexer 与 Parser,但在 Lisp 家族,源程序语法就已经是 AST 了,所以会把 Lexer...每个文件生成一个__init 加载类 gen-class 生成固定名字类,方便与 Java 交互 生成 bytecode 会在本系列第二篇文章详细介绍,敬请期待。...IPersistentVector ret = PersistentVector.EMPTY; for (int i = 0; i < args.count(); i++) // 这里递归求列表每项值...ret = (IPersistentVector) ret.cons(((Expr) args.nth(i)).eval()); return ret.seq(); } 总结 之前看 SICP

94930

GitHub 上这个「计算机科学」自学指南火了!

互联网上,到处都有许多学习资源,然而精华与糟粕并存。你所需要,不是一个诸如 “200 + 免费在线课程” 清单,而是以下问题答案: 你应当学习哪些科目,为什么?...对于这些科目,最好书籍或者视频课程是什么? 在这份指引,我们尝试对这些问题做出确定回答。 简而言之 大致按照列出顺序,借助我们所建议教材或者视频课程(但是最好二者兼用),学习如下九门科目。...这本书极为优秀且独特,指导人们解决广义上问题,因而一如其适用于数学,它适用于计算机科学。 ? 可以广泛推荐方法只有一个:写之前先思考。...诀窍是先从特定技术回退到基本领域或概念,判断这门流行技术在技术宏观大局位于何处,然后才深入学习这门技术。 为什么你们还在推荐 SICP?...先尝试读一下,有些人觉得 SICP 让人神魂颠倒,这在其他书很少见。如果你不喜欢,你可以尝试其他东西,也许以后再回到 SICP。 为什么你们还在推荐龙书? 龙书依旧是内容最为完整编译器单本书籍。

2.4K20

NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢

1998 年演讲“语言成长”评论说,一个优秀程序员“不仅仅是编写程序。一个优秀程序员建立了一个工作词汇。”...对于问题攻击采用了一系列程序,其中大部分在途中出现。这些程序充满了似乎特定于手头问题问题。要欣赏编程作为一种独立智力活动,你必须转向计算机编程;你必须阅读和编写计算机程序——其中很多。...数学提供了处理“是什么概念精确框架。计算提供了处理“如何”概念精确框架。 在教授我们材料时,我们使用是 Lisp 编程语言一个方言。我们从不正式教授这种语言,因为我们不必这样。...过了一段时间,我们就会忘记语言语法细节(因为几乎没有),并着手处理真正问题——弄清楚我们想要计算什么,如何将问题分解为可管理部分,以及如何处理这些部分。...他们在过去九年不断反馈使我们解决了无数 JavaScript 特定问题,消除了不必要复杂性,同时保留了 SICP 和 JavaScript 基本特征。

11010

如何高效地学习编程语言

下面这些学习编程语言最佳技巧是从多年 著书 写作 , 演讲 和 培训 总结出来。这里头很多技巧来源于对高效学习前沿研究做了解释书籍。...意思是,这差不多就是“关注”(字面上)意思。不过,全神贯注会导致我们只能一直探索解决方案空间一小部分。一旦放空,我们潜意识就可以探索并联结我们经验广泛领域。...当你重新看地图时,确切地点立马映入眼帘。 我们曾经都有过这样经验,在洗澡时候突发灵感。现在你对于什么这么有了更好了解,那么也就能刻意地使用这个技巧。...,不幸结果是,当你遇到问题最终完全找错了地方。...将在其它博客文章罗列一些待回答宽泛问题列表,应该能帮助你学习任何语言。 明确目的,外部模型,内部模型 任何时候你学习使用新工具,明确学习目的,外部模型和内部模型都是十分有用

1K60

来自于编程大师职业建议:别老想着写码

“昨天就新学了一个编译算法,并将它应用到我项目上,随后便干净利落解决了令我非常头疼问题,”他说,“虽然这种情况并不会经常发生,但要真能用得到的话,效率还是很高。”...Schlueter 说了一个奇特观点:“大家可以试着养成爱于写作习惯,写什么都行,认为这是成为一名好编程者所必要。”...“这是一个很好很有思想现代语言,认为它会从iOS平台传播出去,”他说,“JavaScript 非常实用,也很容易上手,虽然不是什么太伟大语言。...“在电脑上写代码应该是最后才去做事了,而更多重要事将在思考与讨论完成,”他说,“在写码之前,你就应该想好你要做些什么,你想要达成怎样效果,然后通过哪些方法去做,更好。...对于即将投入到编程事业年轻人们,Eich 则建议大家多关注下空间探索、3D打印、3D渲染、生物信息和互联网等新兴行业,都是高科技啊,想想都让人兴奋。

50220

这是一篇非常具有操作性程序员初学者攻略。

首先你得有一个 maxSoFar 变量,之后对于每个数… •语法:怎样用某种编程语言表达这些算法,让计算机能够理解。 •系统基础:为什么 while(1) 时线程永远无法结束?...在阅读 SICP 之前,你也许能通过调用几个函数解决一个简单问题。...但阅读完 SICP 之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大问题,这是编程能力巨大飞跃,这会在本质上改变你思考问题以及用代码解决问题方式。 ?...此外,SICP 教学语言为 Scheme,可以让你初步了解函数式编程。更重要是,他语法十分简单,你可以很快学会它,从而把更多时间用于学习书中编程思想以及复杂问题解决之道上。...不,错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但总之,你遵循指南好好看书,那就会体验「会当凌绝顶」感觉。

73060

如何高效地学习编程语言

下面这些学习编程语言最佳技巧是从多年著书写作,演讲和培训总结出来。这里头很多技巧来源于对高效学习前沿研究做了解释书籍。...意思是,这差不多就是“关注”(字面上)意思。不过,全神贯注会导致我们只能一直探索解决方案空间一小部分。一旦放空,我们潜意识就可以探索并联结我们经验广泛领域。...当你重新看地图时,确切地点立马映入眼帘。 我们曾经都有过这样经验,在洗澡时候突发灵感。现在你对于什么这么有了更好了解,那么也就能刻意地使用这个技巧。...,不幸结果是,当你遇到问题最终完全找错了地方。...将在其它博客文章罗列一些待回答宽泛问题列表,应该能帮助你学习任何语言。 明确目的,外部模型,内部模型 任何时候你学习使用新工具,明确学习目的,外部模型和内部模型都是十分有用

69840

程序设计思维

这个题目很大,而我只想谈谈自己对于SICP一点思考。...今天就不介绍这本书内容了,这些等我读完了再来做个全面的介绍,这次只想把今天看书收获记录下来。 《SICP》里有很多示例代码,一开始老看着别扭,今天对这个别扭原因进行了深入思考。...但是在《SICP并非如此,由于Scheme支持函数式编程,抽象粒度更细(以函数为单位,而不是对象或者类),所以作者是站在一个很高抽象层面上看待问题,理清问题脉络,很快地给出一个原型,这个原型已经解决了问题...这种思维可以看做是一种递归式思维,自上而下去看待问题,所以说函数式编程递归真是无处不在啊。...《SICP精髓在于合理抽象和管理复杂度,觉得这也是编程和软件工程精髓。

96940

哪本书才是编程领域“九阴真经”

前几天在公众号调查了下“对自己编程影响最大一本书是什么”,答案基本不出所预料:SICP、HTDP、 K & R C、Hackers and Painters 占据上风。...曾经花了好几年时间去读 SICP,大概读了三四遍,仔细钻研里面的每一道习题,收获也颇丰,对各种语言现象(递归、CPS、惰性求值、非确定性计算与流处理)、编译器、可计算行问题等有了深刻认识。...所以,我们评论一个程序员往往会说他有什么软件作品,而且相信,每个程序员都为写出一个受众广大软件而孜孜不倦。...他们那些回忆对于正在进阶 coder 来说是无比珍贵财富,觉得 具体知识可以通过不同方式习得,但往往就是这种洞察一切回忆与畅谈,是我们年轻程序员所缺少。...本书看了一半有余,觉得非常有价值,推荐给你,希望我们都能有朝一日成为理想自己。共勉。

35720

前端 vs 后端:哪一个适合你?

经常会有初学者来问我刚开始学习编程时候应该学些什么?问这个问题就跟一个医学生询问应该专注研究哪个领域一样。根本没有一个标准答案。但我还是想提供一些指导,并就这个问题提出一些自己看法。...职业满足感 如果你选择成为一名开发人员是因为你想获得职业满足感,并一些你喜欢事情,那么建议是,当你开始时,前后端都要做。同时涉猎前端和后端,这样你就能感受到你更喜欢什么。这么会很辛苦吗?...当然会,但是这也会极大地增加你找到喜欢事情机会。 在前端和后端生态系统,仍然有许多你可以选择并且能做得非常出色专业。当你开始时候,试着去了解一些基本东西,不要太担心会沉迷其中。...什么选择后端 想我应该在这里加上一段为什么最终选择了后端,希望它可以在其他人决定时帮助他们。当我转行成为一名开发人员时,寻求工作满足感,并决定开始跨整个工作栈。...没有什么是永恒 无论你决定专注于什么,要知道没有什么是永恒。如果你走错了一条路,你总是可以悬崖勒马。软件工程一个伟大之处在于,它把所有的东西都整合在一起。

1.4K20

是怎样学习新编程语言

不仅解决问题固然可乐,学习过程也同样充满了新鲜感,不过需要谨防是新鲜感带来胜任力错觉。 胜任力错觉指的是反复接触新东西,发现不用花费什么气力就理解了其中所有的内容。说简单点,就是自以为是。...Elixir中有iex命令作为repl,而且这门语言深受Clojure影响,尤其是文档和例子方面很充足,对于初学者再友好不过。...Clojure中有keyword,如{:name "clojure"},而Python并没有这样数据类型,只好使用{'name': "python"},那么Elixir呢?...end 参数列表[parent | children],解构出了列表head和rest,这对于递归简直就是福音。...!表示如果指定目录有问题,函数会抛出error或者异常。

91330

pythonmap和filter避坑指南

上述介绍只是一个引子,因为了解什么是可变什么是不可变什么是值类型对于资深pythoner是非常有意义。 接下来我们从几个常见问题来开始下面的课程。...,您可能知道哪里出错了,这是意料之中。...你只在绝对需要时候计算它,这是懒惰。这在函数式编程很常见。这就是为什么这在python是一个问题。...你未来行为会影响你过去行为结果。我们实质上是在改变过去,这使得对代码进行推理变得极为困难。 将快速向您展示一个clojure示例。...filter实现deepcopy意味着实现不是完全懒惰。这种实现唯一优点是当过滤函数很昂贵时。 ◆ 使用即时计算 认为最实用解决方案是即时地计算map和filter。

49410
领券