首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流时间:球拍中的不匹配错误命中

流时间:球拍中的不匹配错误命中
EN

Stack Overflow用户
提问于 2016-01-20 20:53:52
回答 1查看 187关注 0票数 0

我编写了这个程序,它使用宏nota和ping,nota允许我更容易地定义一个便笺,而ping只用一行代码(以ping开头的代码)来压缩注释部分中的三行代码(通过扬声器发送)。

问题是,这两个宏似乎没有一起工作,而我得到的是不匹配的错误:

流-时间:不匹配;参数的预期数量不匹配给定的数量:0给定:2个参数。:#

我试过使用定义和定义语法,但它不起作用。

代码语言:javascript
复制
#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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 21:07:54

ping缺少一个开始来对以下3种表单进行分组:

代码语言:javascript
复制
(define-syntax-rule (ping y)
  (begin
    (signal-play y)
    (sleep 0.25)
    (stop)))

然后宏步骤显示您的代码被展开为

代码语言:javascript
复制
(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))))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34910312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档