用作表达式的球拍关键字

Racket Keyword used as an expression

我尝试编写一个程序,在源代码中添加字符串 "hello world"。 source.rkt 中的文件名。它给了我这个错误:

source.rkt:6:31: #%datum: keyword used as an expression in: #:mode
  #(118 6)

这是代码:

#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)

方括号不是文字。他们的意思是可选的。因此,正确的语法是:

(define out (open-output-file "source.rkt"
                              #:mode 'text               
                              #:exists 'can-update))