“<-”在球拍中做什么?
What does "<-" do in Racket?
我最近在 Racket 的 ffi
文档中偶然发现了这段示例代码:
(let-values ([(data meta) (read-sound* "/tmp/x.wav")])
(printf ">>> data-length: ~s\n>>> meta: ~s\n" (length data) meta)
(let* ([data data #;
(list-of (list (add-half (1st x) (1st y))
(add-half (2nd x) (2nd y)))
(x <- data
and
y <- (append (repeated-list (list 0.0 0.0) 11025) data)
and
i <- 0.1 0.12 ..))])
x <- data
、y <- ...
和 i <- ...
有什么作用?
我找不到此表示法的任何相关文档。
Link 到有问题的代码。
首先注意#;
注释掉了后面的s-expression,所以整个list-of
形式在代码示例中被注释掉了。 Looking at the linked code,注意(require swindle)
也被注释掉了,提示相关定义可以在那里找到。
查看 documentation for Swindle,发现 list-of
形式是一种列表理解工具,<-
用于此处的生成器子句。特别地,(v <- ... and v <- ...)
是并行生成器子句。
我最近在 Racket 的 ffi
文档中偶然发现了这段示例代码:
(let-values ([(data meta) (read-sound* "/tmp/x.wav")])
(printf ">>> data-length: ~s\n>>> meta: ~s\n" (length data) meta)
(let* ([data data #;
(list-of (list (add-half (1st x) (1st y))
(add-half (2nd x) (2nd y)))
(x <- data
and
y <- (append (repeated-list (list 0.0 0.0) 11025) data)
and
i <- 0.1 0.12 ..))])
x <- data
、y <- ...
和 i <- ...
有什么作用?
我找不到此表示法的任何相关文档。
Link 到有问题的代码。
首先注意#;
注释掉了后面的s-expression,所以整个list-of
形式在代码示例中被注释掉了。 Looking at the linked code,注意(require swindle)
也被注释掉了,提示相关定义可以在那里找到。
查看 documentation for Swindle,发现 list-of
形式是一种列表理解工具,<-
用于此处的生成器子句。特别地,(v <- ... and v <- ...)
是并行生成器子句。