标签: evaluation

Bash:评估一个数学术语?

echo 3+3
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Bash中评估这样的表达式,在本例中为6?

math bash evaluation sh

38
推荐指数
4
解决办法
4万
查看次数

SQL UPDATE评估顺序

以下查询中的评估顺序是什么:

UPDATE tbl SET q = q + 1, p = q;
Run Code Online (Sandbox Code Playgroud)

也就是说,将"tbl"."p"被设置为qq + 1?此处的评估顺序是否受SQL标准的约束?

谢谢.

UPDATE

在考虑了Migs的回答之后,我对我能找到的所有数据库进行了一些测试.虽然我不知道标准是什么,但实施方式各不相同.

特定

CREATE TABLE tbl (p INT NOT NULL, q INT NOT NULL);
INSERT INTO tbl VALUES (1, 5);   -- p := 1, q := 5
UPDATE tbl SET q = q + 1, p = q;
Run Code Online (Sandbox Code Playgroud)

我发现的价值"p""q"分别为:

database           p   q
-----------------+---+---
Firebird 2.1.3   | 6 | 6  -- But see …
Run Code Online (Sandbox Code Playgroud)

sql evaluation operator-precedence sql-update

36
推荐指数
2
解决办法
4305
查看次数

如何从Kotlin枚举中获取Int值?

我有这样的枚举:

enum class States(value: Int) {
    STATE_A(1),
    STATE_B(2),
    STATE_C(3),
    STATE_D(4)
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得枚举的价值?例如States.STATE_C应返回3.

evaluation enums kotlin

36
推荐指数
1
解决办法
2万
查看次数

33
推荐指数
3
解决办法
3万
查看次数

引号和列表有什么区别?

我知道你可以使用'(aka quote)创建一个列表,我一直都在使用它,如下所示:

> (car '(1 2 3))
1
Run Code Online (Sandbox Code Playgroud)

但它并不总是像我期望的那样工作.例如,我试图创建一个函数列表,像这样,但它不起作用:

> (define math-fns '(+ - * /))
> (map (lambda (fn) (fn 1)) math-fns)
application: not a procedure;
  expected a procedure that can be applied to arguments
  given: '+
Run Code Online (Sandbox Code Playgroud)

当我使用时list,它的工作原理:

> (define math-fns (list + - * /))
> (map (lambda (fn) (fn 1)) math-fns)
'(1 -1 1 1)
Run Code Online (Sandbox Code Playgroud)

为什么?我认为'这只是一个方便的速记,为什么行为不同?

evaluation scheme racket quote

33
推荐指数
2
解决办法
8009
查看次数

30
推荐指数
2
解决办法
5365
查看次数

如何评估GDB中的功能?

我想知道为什么评估函数在gdb中不起作用?在我的源文件中包含,当在gdb中调试时,这些示例是错误的评估.

(gdb) p pow(3,2)

$10 = 1

(gdb) p pow(3,3)

$11 = 1

(gdb) p sqrt(9)

$12 = 0
Run Code Online (Sandbox Code Playgroud)

evaluation gdb function

29
推荐指数
4
解决办法
6万
查看次数

unboxed类型和严格性之间的关系是什么?

未装箱的类型,比如Int#,和严格的功能,f (!x) = ...是不同的,但我看到概念上的相似性 - 他们在某种程度上不允许暴力/懒惰.如果Haskell是像Ocaml这样的严格语言,那么每个函数都是严格的,并且每个类型都是未装箱的.unboxed类型与强制执行之间的关系是什么?

evaluation haskell lazy-evaluation strictness

29
推荐指数
3
解决办法
3598
查看次数

伊德里斯急切评价

Haskell中,我可能会这样实现if:

if' True  x y = x
if' False x y = y
spin 0 = ()
spin n = spin (n - 1)
Run Code Online (Sandbox Code Playgroud)

表现我的期望:

haskell> if' True  (spin 1000000) ()  -- takes a moment
haskell> if' False (spin 1000000) ()  -- immediate
Run Code Online (Sandbox Code Playgroud)

Racket中,我可以实现这样的缺陷if:

(define (if2 cond x y) (if cond x y))
(define (spin n) (if (= n 0) (void) (spin (- n 1))))
Run Code Online (Sandbox Code Playgroud)

表现我的期望:

racket> (if2 …
Run Code Online (Sandbox Code Playgroud)

evaluation haskell lazy-evaluation expression-evaluation idris

29
推荐指数
1
解决办法
1491
查看次数

C# 是否保证分支嵌套表达式的求值顺序?

显然,C# 可以处理嵌套表达式和链式表达式。如果嵌套和/或链接是线性的,那么很明显表达式的计算顺序是:

Foo(Bar(Baz().Bop()))只能以下顺序评估:

  • Baz()
  • Bop()
  • Bar()
  • Foo()

但如果嵌套不是线性的怎么办?考虑:Foo(Baz()).Bar(Bop())

显然以下内容必须全部为真:

  • BazFoo
  • FooBar
  • BopBar

但目前尚不清楚具体何时Bop进行评估。以下任何一项都是可行的订单:

  • 可能性#1
    • Bop()
    • Baz()
    • Foo()
    • Bar()
  • 可能性#2
    • Baz()
    • Bop()
    • Foo()
    • Bar()
  • 可能性#3
    • Baz()
    • Foo()
    • Bop()
    • Bar()

我的直觉是第三个选项可能是正确的。即它会Foo(Baz())在开始评估任何一个之前进行全面评估.Bar(Bop())

虽然我当然可以测试个别情况来看看会发生什么,但这并不能告诉我我的猜测是否总是会发生的?

但我的问题是: 分支嵌套表达式的求值顺序是定义为 C# 语言规范的一部分,还是留给编译器根据情况判断?

如果不是,至少知道它是确定性的吗?

c# evaluation expression specifications

29
推荐指数
1
解决办法
961
查看次数