【发布时间】:2015-04-08 15:51:09
【问题描述】:
我对我在 Racket 中编写的一个函数感到非常困惑。我可能太习惯 OCaml 的 let ... in 语法了。
(define/public (get-rects)
(let wrap-edge ([(coords '()) (append coords tetramino-wh)])
(case current-type
[(0) (vector
(wrap-edge (list 0 0))
(wrap-edge (list tetramino-w 0))
(wrap-edge (list (* 2 tetramino-w) 0))
(wrap-edge (list (* 3 tetramino-w) 0)))])))
我正在尝试用 OCaml 之类的方式做一些类似的事情:
let wrap_edge = ... in
// Create a vector using wrap-edge
我不知道最好的方法是什么。我知道将 wrap-edge 定义为兄弟姐妹很容易,但如果我想定义一种“让进来”的东西,define 不是正确的选择……尽管我可能只是让自己变得更加困难。它应该更像:
(let ([wrap-edge (lambda (coords) (append coords tetramino-wh))]))
这是唯一的选择吗?这样做似乎太臃肿了。
【问题讨论】:
标签: lambda scheme ocaml racket let