关于球拍:#lang未启用



我要学习如何设计程序一段时间。但当我开始使用我的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

我使用"require"来加载路径。

 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。

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

racket -I <language>

可以用于在从命令行运行时指定语言。#lang racket应该是默认值,所以只需删除该行,然后使用racket命令从命令行运行脚本。

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

上面写着:

模块文件开头的#lang是模块形式的缩写,很像"是引号形式的缩写"。与"不同,#lang缩写在REPL中不能很好地工作,部分原因是它必须以文件结尾结束,但也因为#lang的长手扩展取决于封闭文件的名称。

相关内容