booth 的中文解释是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了booth 的中文解释是啥?相关的知识,希望对你有一定的参考价值。

booth
中文\英文翻译: booth

1. (有篷的)货摊

I had a pepsi at a refreshment booth round the corner.

我在转角处的餐饮摊喝了一杯百事可乐。

2. 【美】公用电话亭;岗亭

He went into the phone booth and dialed the number.

他走进电话亭拨了号码。

3. 投票站

4. (隔开的)小房间;(餐厅等的)雅座
参考技术A booth
KK: []
DJ: []
n.[C]
1. (有篷的)货摊
I had a pepsi at a refreshment booth round the corner.
我在转角处的餐饮摊喝了一杯百事可乐。
2. 【美】公用电话亭;岗亭
He went into the phone booth and dialed the number.
他走进电话亭拨了号码。
3. 投票站
4. (隔开的)小房间;(餐厅等的)雅座
参考技术B 词性及解释
n. 亭, 摊棚
【经】 货摊, 电话间
例句
A voting booth; a projection booth.
投票站;放映间

An unoccupied telephone booth.
一个空的电话亭

At the ticket booth, please.
公园售票处好了。

I take down the booth.
拆除摊位。

Sidewalk snack booth; large stall
大排档
参考技术C booth [buːð]
n. 货摊; 岗亭; 公用电话亭; 投
参考技术D 二者都,必须是两个。
三个的话用all本回答被提问者采纳

SICP中练习1.6的解释是啥?

【中文标题】SICP中练习1.6的解释是啥?【英文标题】:What's the explanation for Exercise 1.6 in SICP?SICP中练习1.6的解释是什么? 【发布时间】:2010-11-13 08:43:13 【问题描述】:

我刚刚开始学习 SICP(我自己;这不是为了上课),我已经在练习 1.6 上苦苦挣扎了几天,我似乎无法理解出去。这是 Alyssa 根据 cond 重新定义 if 的地方,如下所示:

(define (new-if predicate then-clause else-clause)
    (cond (predicate then-clause)
          (else else-clause))

她在一些简单的情况下成功地测试了它,然后用它重新编写了平方根程序(与if 配合得很好):

(define (sqrt-iter guess x)
    (new-if (good-enough? guess x)
            guess
            (sqrt-iter (improve guess x)
                       x)))

然后问题问:“当 Alyssa 尝试使用它来计算平方根时会发生什么?解释一下。” [如有必要,我很乐意重现其他程序(good-enough?improve 等),请告诉我。]

现在,我知道会发生什么:它从不返回值,这意味着程序无限递归。我只是无法解释为什么会发生这种情况。 ifnew-if 之间存在的任何细微差别都让我无法理解。非常感谢任何和所有帮助。

【问题讨论】:

“recursive”的动词形式是“to recurse”,所以是“recurses”。 也与 4.25 比较:community.schemewiki.org/?sicp-ex-4.25 【参考方案1】:

以前的答案很棒。我将添加另一个更详尽的解释。

考虑这种差异的另一种方式是:使用if 的递归如何在某个点停止而使用new-if 的递归永远循环?

首先让我们看看这两个 if 的一般工作原理,然后看看它们在这种情况下是如何工作的。

if

这是@alex-vasi解释的:

要计算 if 表达式,解释器首先计算表达式的 <predicate> 部分。如果<predicate> 评估为真值,则解释器评估<consequent> 并返回其值。否则,它会评估 <alternative> 并返回其值。

new-if

这是@Schmudde解释的:

在调用过程之前对所有参数进行全面评估

使用if 的递归如何在某个点停止?

它停止了,因为在 guess 足够好的时候(即(good-enough? guess x)true),我们将拥有:

(if (good-enough? guess x)
    guess
    (sqrt-iter (improve guess x)
               x)))

由于predicate 现在是true,解释器将评估consequent(即guess),返回它的值并且将不再评估alternative (即(sqrt-iter (improve guess x) x))。

所以if 实际上递归地评估(sqrt-iter (improve guess x) x) 直到guess 足够好。然后它停止递归。

使用new-if 的递归如何永远循环?

if 一样,new-if (sqrt-iter (improve guess x) x) 将被递归评估,直到 guess 足够好。

但它会一次又一次地评估(sqrt-iter (improve guess x) x)。为什么?因为在评估时:

(new-if (good-enough? guess x)
    guess
    (sqrt-iter (improve guess x)
               x)))

由于new-if 是一个过程,它不会检查(good-enough? guess x) 是否为真,以决定评估guess(sqrt-iter (improve guess x))。它将评估(good-enough? guess x)guess(sqrt-iter (improve guess x)),因为这些是过程的参数。因此,即使guess 足够好,它也会继续递归调用(sqrt-iter (improve guess x)):/。

【讨论】:

这就像答案的第二部分。谢谢!【参考方案2】:

在 Scheme 中可以通过三种方式评估表单:

    申请订单 评估参数,然后应用 给定f(x)=x+x: 3*f(1)*f(1)3*2*2 正常顺序 完全展开然后缩小 给定f(x)=x+x: 3*f(1)*f(1)3*(1+1)*(1+1)(也用于“惰性求值”) 特殊形式 例如: 布尔值andor。例如:(and <e1> ... <en>) 计算 Left → Right。如果任何计算结果为假,则 and 表达式的值为假,并且不计算 <e> 的其余部分。 ifcond 等条件 (if <predicate> <consequent> <alternative>):如果<predicate> 计算为真值,则解释器计算<consequent> 并返回其值。否则,它会评估 <alternative> 并返回其值 (cond (<p1> <e1>) ... (<pn> <en>)):首先评估谓词<p1>。如果其值为 false,则评估 <pn>。如果<pn> 的值也为假,则评估<pn+1>。当谓词为真时,解释器返回相应的结果表达式<e> 的值。

以练习 1.6 为例:

new-if 是正常程序。在 Scheme(和许多其他语言)中,参数在调用过程之前完全评估。这称为申请订单。 ∴ 每次调用new-if 时都会调用sqrt-iter,导致无限循环。 为了读者的启迪,普通的ifs 是一个特殊形式。除非调用 <alternative>,否则不会评估递归语句。

【讨论】:

【参考方案3】:

首先,您必须在应用订单评估和正常订单之间understand the difference。 Lisp 使用应用顺序,但条件表达式的计算方式不像普通函数 (sicp chapter 1.1.6):

(if <predicate> <consequent> <alternative>)

要计算 if 表达式,解释器首先计算表达式的 &lt;predicate&gt; 部分。如果&lt;predicate&gt; 评估为真值,则解释器评估&lt;consequent&gt; 并返回其值。否则,它会评估 &lt;alternative&gt; 并返回其值。

【讨论】:

感谢您提供图书参考链接。链接已损坏,但这应该可以工作mitpress.mit.edu/sites/default/files/sicp/full-text/book/…【参考方案4】:

Ex1.6。新的如果:

(define (new-if predicate then-clause else-clause)
     (cond (predicate then-clause)
                (else else-clause)))

与“if 语句”的区别: if 语句从谓词 -> 后件 -> 替代,

逐一评估

然而,'new-if' 必须评估所有参数,也就是 MOMENT 它调用的参数(这意味着'else-clause' 在开始时被评估!!),

因此,当这些参数中的任何一个将自己调用到迭代循环中时,这会导致无限循环

【讨论】:

【参考方案5】:

new-if是一个过程,Scheme使用applicative-order评估(1.1.5),所以在new-if实际执行之前,它必须先评估所有参数,即guess和@987654324 @。可以看到后面的参数是一个递归,它调用了一个新的new-if过程,就是这样无限循环发生的。

普通的if不需要先评估它的参数,顺其自然,这就是ifnew-if的区别。 :)

【讨论】:

new-if 过程具有三个参数:predicatethen-clauseelse-clause。因此,当调用 new-if 时,会评估 (good-enough? guess x)guess(sqrt-iter (improve guess x))。那正确吗 ?这不会改变结果,因为只有sqrt-iter 的评估会导致麻烦。但是imo你忘记了一个论点......【参考方案6】:

new-if 是一个函数。当一个函数被调用时,Scheme 对参数列表做的第一件事是什么?它评估所有个参数。

【讨论】:

OP 在 Haskell 中不会有这个问题! (他会有一大堆其他问题......) 真正烤我的面条的是意识到行为的改变与从if切换到cond无关

以上是关于booth 的中文解释是啥?的主要内容,如果未能解决你的问题,请参考以下文章

booth补码乘法算法中乘数的右移规则是啥?

能详细解释下WordPress是啥么??

PostgreSQL 的解释中的“宽度”字段是啥意思?

perl 解释器的状态码是啥意思?

Spring Eureka UX 上显示的某些元素的解释是啥

我的解释语句中的派生表是啥