Macros 流时间:球拍中的算术不匹配错误命中

Macros 流时间:球拍中的算术不匹配错误命中,macros,lisp,racket,type-mismatch,Macros,Lisp,Racket,Type Mismatch,我编写了这个程序,它使用宏nota和ping,nota来让我定义一个更简单的注释,ping只压缩一行代码(以ping开头的代码),就像我在注释部分的三行代码中所做的那样(通过扬声器发送) 问题是这两个宏似乎不能一起工作,我得到了算术不匹配错误: 流时间:算术不匹配; 参数的预期数量与给定数量不匹配 预期:0 给定:2 论据。: # # 我尝试了define和define语法,但它不起作用 #lang racket (provide (all-defined-out)) (require rs

我编写了这个程序,它使用宏nota和ping,nota来让我定义一个更简单的注释,ping只压缩一行代码(以ping开头的代码),就像我在注释部分的三行代码中所做的那样(通过扬声器发送)

问题是这两个宏似乎不能一起工作,我得到了算术不匹配错误:

流时间:算术不匹配; 参数的预期数量与给定数量不匹配 预期:0 给定:2 论据。: # #

我尝试了define和define语法,但它不起作用

#lang racket

(provide (all-defined-out))

(require rsound)

(define-syntax-rule (nota x y)
  (define x
       (network ()
             [sunet <= sine-wave y]
             [out = (+ sunet)])))

(define-syntax-rule (ping y)
    (
     (signal-play y)
     (sleep 0.25)
     (stop)))

(nota E2 82)
(nota F#2 92)
(nota G2 98)
(nota A2 110)

(ping E2)
(ping F#2)
(ping E2)
(ping G2)
(ping E2)
(ping A2)

;(signal-play E2)
;(sleep 0.25)
;(stop)

;(signal-play F#2)
;(sleep 0.25)
;(stop)

;(signal-play G2)
;(sleep 0.25)
;(stop)

;(signal-play A2)
;(sleep 0.25)
;(stop)
#朗球拍
(提供(所有已定义)
(需要声音)
(定义语法规则(nota x y)
(定义x)
(网络)

[sunet
ping
缺少一个用于将3个表单分组的组:

(define-syntax-rule (ping y)
  (begin
    (signal-play y)
    (sleep 0.25)
    (stop)))
然后宏步进器显示代码已扩展为

(define E2 (network () [sunet <= sine-wave 82] [out = (+ sunet)]))
(define F#2 (network () [sunet <= sine-wave 92] [out = (+ sunet)]))
(define G2 (network () [sunet <= sine-wave 98] [out = (+ sunet)]))
(define A2 (network () [sunet <= sine-wave 110] [out = (+ sunet)]))
(begin (signal-play E2) (sleep 0.25) (stop))
(begin (signal-play F#2) (sleep 0.25) (stop))
(begin (signal-play E2) (sleep 0.25) (stop))
(begin (signal-play G2) (sleep 0.25) (stop))
(begin (signal-play E2) (sleep 0.25) (stop))
(begin (signal-play A2) (sleep 0.25) (stop))))

(定义E2(网络()[sunet
ping
缺少一个用于对3个表单进行分组的组:

(define-syntax-rule (ping y)
  (begin
    (signal-play y)
    (sleep 0.25)
    (stop)))
然后宏步进器显示代码已扩展为

(define E2 (network () [sunet <= sine-wave 82] [out = (+ sunet)]))
(define F#2 (network () [sunet <= sine-wave 92] [out = (+ sunet)]))
(define G2 (network () [sunet <= sine-wave 98] [out = (+ sunet)]))
(define A2 (network () [sunet <= sine-wave 110] [out = (+ sunet)]))
(begin (signal-play E2) (sleep 0.25) (stop))
(begin (signal-play F#2) (sleep 0.25) (stop))
(begin (signal-play E2) (sleep 0.25) (stop))
(begin (signal-play G2) (sleep 0.25) (stop))
(begin (signal-play E2) (sleep 0.25) (stop))
(begin (signal-play A2) (sleep 0.25) (stop))))
(定义E2(网络()[sunet