初始化,处理并返回球拍

时间:2016-11-14 21:12:20

标签: racket

在Racket上编码时,我经常遇到某种情况,当我得到一些价值时,我需要以某种方式处理它然后返回它:

(let ([result (compute-some-value)])
  (process-somehow result)
  result)

其中process-somehow返回“void”。

这段样板代码看起来错了。球拍是否有一些构造来更紧凑地描述这种模式(在一行或两行中),如begin0aif,或者我需要为此编写我自己的照应宏?

为了澄清一个问题,我正在寻找能够写出像

这样的内置球拍结构
(init-and-process (compute-some-value) 
                  process-somehow)

(init-and-process (compute-some-value) 
                  (process-somehow it))

1 个答案:

答案 0 :(得分:1)

没有内置的程序,但很容易定义自己的可重用程序:

(define (init-and-process compute process)
  (let ([result (compute)])
    (process result)
    result))

像这样使用:

(init-and-process compute-some-value process-somehow)
; => returns (compute-some-value)