球拍创建功能/lambda在let中

球拍创建功能/lambda在let中,lambda,scheme,ocaml,racket,let,Lambda,Scheme,Ocaml,Racket,Let,我被我在Racket里写的一个函数弄糊涂了。我可能太习惯了让。。。在OCaml的语法中 (define/public (get-rects) (let wrap-edge ([(coords '()) (append coords tetramino-wh)]) (case current-type [(0) (vector (wrap-edge (list 0 0)) (wrap-e

我被我在Racket里写的一个函数弄糊涂了。我可能太习惯了
让。。。在OCaml的
语法中

(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定义为兄弟是很容易的,但是如果我想要“让进来”之类的东西,那么定义并不是正确的选择。。。虽然我可能只是让这件事对我自己更难。是否应该更像:

(let ([wrap-edge (lambda (coords) (append coords tetramino-wh))]))

这是唯一的选择吗?这样做似乎太夸张了。

对于这样的事情,在球拍中使用
定义
可能更为惯用。您可以在现有函数中声明一个函数,然后将其正常使用

(define/public (get-rects)
  (define (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)))]))

另请参见中关于
let
vs
define
的建议。

对于类似的内容,仅使用
define
可能更惯用。您可以在现有函数中声明一个函数,然后将其正常使用

(define/public (get-rects)
  (define (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)))]))

另请参见中关于
let
vs
define
的建议。

对于类似的内容,仅使用
define
可能更惯用。您可以在现有函数中声明一个函数,然后将其正常使用

(define/public (get-rects)
  (define (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)))]))

另请参见中关于
let
vs
define
的建议。

对于类似的内容,仅使用
define
可能更惯用。您可以在现有函数中声明一个函数,然后将其正常使用

(define/public (get-rects)
  (define (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)))]))

另请参见中关于
定义
的建议。

Ok!谢谢你的风格指南参考!好啊谢谢你的风格指南参考!好啊谢谢你的风格指南参考!好啊谢谢你的风格指南参考!