我安装了DrRacket,完整版本不是最小的,但我没有包.
当我运行此代码时:
#lang racket
(provide (all-defined-out))
(require rsound)
(play ding)
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
standard-module-name-resolver: collection not found
for module path: rsound
collection: "rsound"
in collection directories:
C:\Users\Theodor\AppData\Roaming\Racket\6.3\collects
C:\Program Files\Racket\collects
... [161 additional linked and package directories] in: rsound
no packages suggestions are available .
Run Code Online (Sandbox Code Playgroud)
在"收集"中,我只有"catalog.sqlite".
如何为DrRacket安装软件包?"更新目录"不起作用.其他类似的问题没有帮助.
我希望能够写:
(nota E2 82)
Run Code Online (Sandbox Code Playgroud)
代替:
(define E2
(network ()
[sunet <= sine-wave 82]
[out = (+ sunet)]))
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用宏来做到这一点,并尝试写这个:
(define-syntax (nota stx)
(syntax-case stx ()
[(nota x) #'(network ()
[sunet <= sine-wave x]
[out = (+ sunet)])]))
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
nota: bad syntax in: (nota E2 82)
Run Code Online (Sandbox Code Playgroud) 我有这个Clojure代码:
(def target-data
(map #(vector % (+ (* % %) % 1))
(range -1.0 1.0 0.1)))
Run Code Online (Sandbox Code Playgroud)
我如何在Racket中翻译它?我试过了:
(define (target-data)
(map #(vector % (+ (* % %) % 1))
(range -1.0 1.0 0.1)))
Run Code Online (Sandbox Code Playgroud)
在#这似乎是在Clojure的读者宏没有其在球拍等同.我该如何创建它?
我尝试编写一个程序,在源代码中添加字符串"hello world".source.rkt中文件的名称.它给了我这个错误:
source.rkt:6:31: #%datum: keyword used as an expression in: #:mode
#(118 6)
Run Code Online (Sandbox Code Playgroud)
这是代码:
#lang racket
(provide (all-defined-out))
(define out (open-output-file "source.rkt"
[#:mode 'text
#:exists 'can-update]))
(write "hello world" out)
(close-output-port out)
Run Code Online (Sandbox Code Playgroud) 我在Let over Lambda中阅读了有关词汇clojures的内容,并且此代码示例适用于Common Lisp:
(let ((counter 0))
(lambda () (incf counter)))
Run Code Online (Sandbox Code Playgroud)
我试着在Racket中写成这样:
(let ((counter 0))
(lambda() (+ counter 1)))
Run Code Online (Sandbox Code Playgroud)
当我在REPL中调用它时,counter它给了我错误:
counter: undefined;
cannot reference an identifier before its definition
Run Code Online (Sandbox Code Playgroud)
据我了解,将let / set与lambda混合使用可以在lambda中存储某些状态,该状态可以由其他功能处理,其方式与人类记忆可以通过感官的输入进行处理和更改一样。我对我的LISP程序中的部分代码感兴趣,这些代码部分因与其他功能的交互而更改。即使lambda不能做到这一点,我仍然想了解它(lambda函数),因为它似乎是Racket和其他LISP方言的重要组成部分。