4

I want to be able to write:

(nota E2 82)

instead of:

(define E2
  (network ()
           [sunet <= sine-wave 82]
           [out = (+ sunet)]))

I know I can do this using macros and tried to write this:

(define-syntax (nota stx)
  (syntax-case stx ()
    [(nota x) #'(network ()
                         [sunet <= sine-wave x]
                         [out = (+ sunet)])]))

But I get this error:

nota: bad syntax in: (nota E2 82)
4

2 回答 2

5

最简单的解决方案是

(define-syntax-rule (nota x y)
  (define x
    (network ()
             [sunet <= sine-wave y]
             [out = (+ sunet)])))
于 2016-01-20T18:18:06.123 回答
3

好吧,这太可怕了。你真的不需要写这个宏;应该有一种向网络提供固定输入的表格。

事实上,有。但是......它没有记录,也没有很好的命名。它目前被称为fixed-inputs,但我将把它重命名为network-const,并记录下来。

感谢您在这方面提示我!

约翰

于 2016-01-20T21:01:42.240 回答