关于球拍:#lang未启用

时间:2014-09-03 02:24:44

标签: scheme racket

我必须学习如何设计程序一段时间。但是一旦我开始使用我的Emacs来学习htdp,我遇到了一些问题。 问题是:   我输入了#lang球拍,但它只是显示:

  > stdin::7: read: #lang not enabled in the current context
  context...:
   /usr/share/racket/collects/racket/private/misc.rkt:87:7
  > racket: undefined;
  cannot reference undefined identifier
  context...:
   /usr/share/racket/collects/racket/private/misc.rkt:87:7

我使用'要求'加载路径。

 stdin::30: cannot open module file
  module path: #<path:/Desktop/htdp/convert.rkt>
  path: /Desktop/htdp/convert.rkt
  system error: No such file or directory; errno=2
  context...:
   standard-module-name-resolver
   /usr/share/racket/collects/racket/private/misc.rkt:87:7

它也行不通。

你可以帮我解决一下吗?  P.S我的系统是Fedora20。

2 个答案:

答案 0 :(得分:2)

当您从控制台运行racket脚本时,您不需要在第一行定义语言。这个标志

racket -I <language>
从命令行运行时,

可用于指定语言。 #lang racket应该是默认值,因此只需删除该行并使用racket命令从命令行运行脚本。

答案 1 :(得分:0)

来自链接https://docs.racket-lang.org/guide/Module_Syntax.html#%28part._hash-lang%29

它说:

模块文件开头的#lang开头是模块形式的简写,就像'是引用形式的简写一样。与'不同,#lang速记在REPL中不能很好地工作,部分原因是它必须以文件结尾来终止,而且还因为#lang的长期扩展取决于所包含文件的名称。