这个符号在 Racket 中是什么意思?
What does this symbol mean in Racket?
(define result (assoc n cache))
(cond
[result => second]
[else ...])
=>
是什么意思?我猜它在 result
和 returns 值上运行 second
?这叫什么,我在哪里可以找到更多相关信息?
在这种情况下,它的意思与
相同
(cond (result (second result))
(else ...))
一般来说,
的条件子句
(foo => bar)
意味着如果 foo
的计算结果为真值,那么它的值将被保存,并作为参数传递给 bar
(它应该计算为一个接受一个参数的过程)。
这意味着:如果条件的计算结果为真值,则将该值发送到右边的函数。它在 documentation 中。例如:
(define alst '((x 1) (y 2) (z 3)))
; if the list contains an association with the `y` key, return the second element
; of that association, which happens to be the value `2`
(cond ((assoc 'y alst) => second)
(else #f))
=> 2
子句 [result => second]
被 cond
这样处理:
- 计算表达式结果并将结果存储在临时变量中,例如
t
。
- 如果该值不为假,则计算表达式
second
并将结果存储在 f
. 中
- 如果值
f
是一个函数,则计算 (f t)
并且其结果成为 cond
表达式的结果。
- 如果
f
不是函数,则会发出错误信号。
扩展
(cond
[result => second]
[else something])
类似于
(let ()
(define t result)
(if t (second t)
something))))
(define result (assoc n cache))
(cond
[result => second]
[else ...])
=>
是什么意思?我猜它在 result
和 returns 值上运行 second
?这叫什么,我在哪里可以找到更多相关信息?
在这种情况下,它的意思与
相同(cond (result (second result))
(else ...))
一般来说,
的条件子句(foo => bar)
意味着如果 foo
的计算结果为真值,那么它的值将被保存,并作为参数传递给 bar
(它应该计算为一个接受一个参数的过程)。
这意味着:如果条件的计算结果为真值,则将该值发送到右边的函数。它在 documentation 中。例如:
(define alst '((x 1) (y 2) (z 3)))
; if the list contains an association with the `y` key, return the second element
; of that association, which happens to be the value `2`
(cond ((assoc 'y alst) => second)
(else #f))
=> 2
子句 [result => second]
被 cond
这样处理:
- 计算表达式结果并将结果存储在临时变量中,例如
t
。 - 如果该值不为假,则计算表达式
second
并将结果存储在f
. 中
- 如果值
f
是一个函数,则计算(f t)
并且其结果成为cond
表达式的结果。 - 如果
f
不是函数,则会发出错误信号。
扩展
(cond
[result => second]
[else something])
类似于
(let ()
(define t result)
(if t (second t)
something))))