问题标签 [the-little-schemer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
579 浏览

lambda - The Little Schemer:坚持 multiinsertLR&co 示例

经过一些工作后,我能够理解该multirember&co功能,但我无法从以下multiinsertLR&co代码中真正理解(第 143 页):

这本书似乎没有解释collector在评估函数时最初应该通过哪一个,所以我分别使用了第 138 页和第 140 页上解释的a-friend收集器和收集器。last-friend使用任一收集器评估函数会导致以下错误(使用带有 petit chez 方案的跟踪函数):

我查看了几次代码,但找不到错误。如果有人有任何见解,请分享。如果有人也可以通过一些好的例子向我指出(相对而言)对延续的温和解释,那也将不胜感激。

0 投票
1 回答
460 浏览

scheme - The Little Schemer 第 4 版:rember 函数讨论

第41页功能简化后rember,有一个问答,我不是很懂。

我试图弄清楚这几天,但我不明白这个问题的确切含义是什么。

谁能解释一下弗里德曼想通过问答来展示什么?

提前致谢

0 投票
4 回答
190 浏览

lisp - 从 cond 语句中删除多余的 else ?

我目前正在阅读《小阴谋家》的第 4 版。一个早期的练习是创建一个函数,该函数insertR在列表中给定值的右侧插入一个值。本书最终得出以下定义:

我自己的定义是这样的:

它们是等价的吗?

0 投票
1 回答
303 浏览

recursion - 这个长度≤1怎么做不止一次?

我花了一天时间阅读The Little Schemerlength≤1一书中的第 166 页;有以下代码:

其中lis(apples)eternityis 如下:

第 166 页(第 4 版)指出:

当我们申请mk-length一次时,我们得到length≤1

进而

我们可以多次这样做吗?

但我不知道如何做到这一点length≤2

0 投票
2 回答
245 浏览

lisp - “小阴谋家”中的利弊结果

在第 178 页,有一个问题:

在哪里

书中的答案是

但我认为答案应该是

为什么我错了?

0 投票
4 回答
6659 浏览

scheme - 小阴谋家和球拍

我开始阅读 Little Schemer,现在我们有 Racket,而不是 PLT Scheme。我想知道 Racket 是否适合做书中的练习,还是我需要另一个真正的 Scheme 编译器。在我忘记告诉你之前,我的操作系统是 Windows x64。

这本书、语言和范式足够复杂,我很想避免与编译器打交道。

提前非常感谢。

0 投票
2 回答
900 浏览

scheme - 为什么 cons 的第二个参数必须是一个列表

我正在读一本叫做小阴谋家的书。

在阅读之前,我已经阅读了 SICP 的前三章

我的问题是为什么 cons 的第二个参数必须是 list

但是,(cons a b)适用于所有值 a 和 b 和

(car (cons a b))=一个

(cdr (cons a b))= b

0 投票
4 回答
996 浏览

list - 检查列表在 Haskell 中是否平坦

The Little Schemer中有一个函数可以检查列表是否平坦:

我正在尝试在 Haskell 中编写相同的递归函数,但没有成功:

如何检查参数是否不在表单中[[a]]?换句话说,[1,2,3]是一个有效的输入,但[[1,3], [2,4]]不是[[[1,2,3]]]

我想在接受列表的递归函数中进一步使用它,以确保我只处理平面列表。

编辑:我看到人们因为is_lat :: [a] -> Bool类型签名而感到困惑。我现在同意,我不应该在运行时检查类型。但是,是否可以在编译时检查类型?如何使该功能仅适用于平面列表?还是我应该彻底改变我的思维方式?

0 投票
3 回答
1801 浏览

lisp - 为什么我收到“atom”的未绑定错误?

我正在尝试通过“The Little Lisper”并且在第一章中已经遇到了障碍。我对 Emacs 比较陌生(这激发了我对学习 Lisp 和 clojure 的兴趣)。我下载了 Mit-scheme 应用程序,并在 Edwin 上进行练习。

我正在努力:

其中 a 是一个原子,l 是一个已经定义的列表。我收到以下错误:

为什么?我使用“null”没有问题?功能。我想“原子?” 是一个内部函数,检查返回的值是否是原子。

任何解释将不胜感激。我还没有设置我的emacs来运行scheme,所有lisp方言之间的细微差别正在考验我的耐心。

0 投票
4 回答
3234 浏览

functional-programming - 小计划者 - 从哪里开始?

我刚刚打开了 The Little Schemer,我觉得我错过了一些东西。

第一个问题问“这是一个原子吗?”,但我没有看到任何关于原子是什么的定义。我想我可以通过问题的答案推导出原子是什么,但接着它继续询问 l 的 car 是什么,l 的 cdr 是什么,我不知道要问什么。

这本书的目的是通过阅读答案来发现问题的含义,还是在阅读本书之前我需要一些基本知识?如果是后者,有人可以指出我可以在哪里获得这些基本知识吗?