BSL(如何设计程序):如何将代码从单独的文件导入到定义区域?

2023-12-11

我对 BSL 有疑问。我想将我的代码分成单独的辅助文件并使用

(require "auxiliary-function.rkt") 

首先将分离的代码导入到定义区域。然而它并没有像想象的那样工作。虽然没有给出明确的错误,但似乎 DrRacket 根本看不到单独文件中的代码,我看到的只是错误

<auxiliary-function-name>: this function is not defined 

显然,

(provide x)

不包含在 BSL 中。我读过manual and this答案,但仍不清楚如何进行这项工作。这在 BSL 中可能吗?

Thanks!


请注意,如果您在一门课程中执行此操作,则该策略可能不会被接受提交。

我为自己的一些项目所做的就是这样的模式:

有一个用普通 Racket 编写的文件,名为"provide.rkt", 像这样:

; provide.rkt
#lang racket
(provide provide all-defined-out)

然后您可以使用它来提供特定函数或提供文件中的所有定义。

用于提供特定功能

在您的“库”BSL 文件中,您可以像这样要求提供,并使用它来提供您想要的特定功能:

; <auxiliary-library>.rkt
; written in BSL
(require "provide.rkt")

(provide <auxiliary-function-name>)

(define (<auxiliary-function-name> ....) ....)

最后,在您的“主”BSL 文件中,您可以像这样需要该库:

; written in BSL
(require "<auxiliary-library>.rkt")

(<auxiliary-function-name> ....)

用于提供文件中的所有定义

在您的“库”BSL 文件中,您可以要求提供并使用它来提供所有内容:

; <auxiliary-library>.rkt
; written in BSL
(require "provide.rkt")

(provide (all-defined-out))

(define (<auxiliary-function-name-1> ....) ....)

(define (<auxiliary-function-name-2> ....) ....)

...

然后在“主”BSL 文件中,您可以请求该库并获取所有定义:

; written in BSL
(require "<auxiliary-library>.rkt")

(<auxiliary-function-name-1> ....)

(<auxiliary-function-name-2> ....)

...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BSL(如何设计程序):如何将代码从单独的文件导入到定义区域? 的相关文章

  • '(引用引用)在方案中

    我正在尝试自学方案 谁能告诉我为什么 quote quote 将输出 quote and quote quote 将输出 quote 非常感谢 这个表达式 quote quote 扩展后
  • 方案中的埃拉托色尼筛选在其过滤过程中使用局部状态的突变

    While 回答最近question我想出了以下代码 实现了埃拉托斯特尼筛的变体 反复剔除初始的2 n顺序 尽早停止 define sieve2 n let ls makelist n let loop ls ls next sievehe
  • 为什么(begin)在Scheme中有效?

    我在 Racket 和 Chez Scheme 中进行了测试 发现 begin 是可以接受的 同时 define a begin 不是 例如我得到的球拍 gt begin gt define a begin stdin 56 10 begi
  • 评估球拍响应/xexpr 中的变量

    我正在尝试在 Racket 中制作一个简单的书签网络应用程序 它的目的是接收一个 url 作为 CGI 参数 现在 我只是试图通过反射它来确认我收到了它 define start request response xexpr let bin
  • 在 SICP 中推广素数对

    我花了一些时间来研究 素数对 的生成SICP 第 2 2 3 节 作为常规接口的序列 例如 1 3 不 因为总和 4 1 4 是的 因为 sum 5 素数 这是我从头开始得到的 有效的 lang sicp RANGE helper func
  • Racket 中列表到字符串的转换

    如何在 DrRacket 中将列表转换为字符串 例如 如何将 红黄蓝绿 转换为 红黄蓝绿 我尝试使用 list gt string 但这似乎只适用于字符 这里的技巧是映射列表symbols作为输入接收 依次将每个数字转换为字符串 并在除最后
  • 匿名 lambda 直接引用自身

    cheme 或 doscheme 的任何方言是否都有一种 self 运算符 以便匿名 lambda 可以自行重复 而无需执行类似 Y 组合器或在 letrec 等中命名的操作 就像是 lambda n cond n 0 1 else n s
  • 球拍/计划过滤

    我如何过滤它以显示所有蔬菜 先感谢您 Pecan 1982 nut AL Blackberry 2004 fruit AL Peach 2006 fruit AL Rice 2007 grain AR Orange 2005 fruit F
  • Tonumber 函数 (tonumber ‘(一二三) --> 123

    解决后如何拼写球拍中的数字 咒语编号 https stackoverflow com questions 22696615 how to spell a number in racket spellnum 22700116 noredire
  • 将字符添加到频率列表

    我有一个关于霍夫曼编码的项目 但我陷入困境 我不明白为什么我的代码不起作用 这是练习 写一个函数add1给定一个字符 它在频率列表中的频率加 1 如果该字符尚未出现在频率列表中 则会添加该字符 add1 e l 1 e 2 x 1 l 1
  • 如何在Racket中使用TCP?

    我试图从客户端向服务器发送消息 并在服务器上打印该消息 服务器 rkt lang racket define the listener tcp listen 9876 define values in out tcp accept the
  • 尾递归Map函数RACKET

    Racket 中的映射函数采用一个函数和一个列表 并将该函数递归地应用于列表中的每个项目 我正在尝试将映射转换为尾递归函数 这该如何完成 你被困在哪里了 您可以定义自己的map程序与内部loop程序 define map f in defi
  • 有没有办法检查一个列表的所有元素是否都包含在球拍的另一个列表中?

    我想要一个执行类似操作的函数 gt function 1 2 3 4 1 2 3 4 5 t 在这种情况下返回 t 因为第一个列表的所有元素都包含在第二个列表中 有没有一个函数可以做到这一点而不必担心顺序 在这种情况下 您不会将列表进行比较
  • Scheme/Racket有枚举操作吗?

    Scheme Racket 是否有相当于 Haskell 中的 a b 表示法的枚举表示法 在 Haskell 中 1 5 计算结果为列表 1 2 3 4 5 for list i in range 1 6 i sequence gt li
  • 有人能用简单的话解释一下 call/cc 吗?

    我正在研究语言球拍并试图掌握 call cc 的实际用途 有人可以用简单的语言解释一下并举一两个例子吗 谢谢 并非所有实现call cc完全相同 但希望这个答案可以适用于所有常见的变体 包括球拍 没有什么麻烦 这个故事其实是根据c内置于Un
  • 方案:为什么内部定义比外部定义快?

    我尝试运行下面的程序 define odd internal x define even x if zero x t odd internal sub1 x if zero x f even sub1 x define odd extern
  • 什么是“3D语法”?

    在编写 Racket 宏的上下文中 3D 语法 是什么意思 这句话我听过好几次了 包含一次对宏的引用I正在写作 但那是不久前的事了 我修复了它 现在我不记得我最初做错了什么 另外 是 3D 语法吗always坏的 或者是像eval 如果你认
  • 创建后缀号码球拍

    我正在尝试在 Racket 中试验我可以做的事情 并且我想在数字后加上字母 对于这个例子 我只想代表10000 as 10K and 1000000 as 1M 有没有办法 用宏或其他方式 我可以扩展1M to 1 1000000 或者有什
  • 使用map或reduce或filter,在Scheme中,计算列表中有多少个元素[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 number length 1 1 0 1 0 0 这假设返回 6 我知道如何使用长度并找到它 但我不知道如何在没有长度的情况下使用映射或过
  • 球拍博士中的位图[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 drracket 中的框架 gui 上加载位图 请给出必要的代码和参考文献 我承认 我很难在文档中找到正确的位置来指向您 这是

随机推荐

  • 从 JavaScript 中的对象获取值[重复]

    这个问题在这里已经有答案了 我有这个对象 var data id 1 second abcd 这些是来自表单的值 我将其传递给函数进行验证 如果上述属性存在 我们可以通过以下方式获取它们的值data id and data second 但
  • Knit2html 未复制 R Studio 中 Knit HTML 按钮的功能

    我正在尝试在 Ubuntu 10 04 中编写一个 Bash 脚本 该脚本打开一个导出 CSV 的 Python 文件 然后运行以下 Rscript 目的是从 Dashboard Rmd 导出带有绘图的 HTML require knitr
  • 按下按钮时循环播放功能? Unity3d C#

    所以 我有一个对象 当我按下旋转按钮时 我希望它旋转 当我按下停止按钮时 我希望它停止 当它处于 void Update 中时它旋转得很好 但是当它处于它自己的函数中时 它只执行一次 我尝试使用循环但仍然没有运气 有人可以帮我吗 Code
  • 使用 ob_start 时如何重定向 php 中的标头位置?

    When condition是真的我明白了 Hello 我想要的是当 condition是真的 那就去谷歌吧 我不知道发生了什么 你能解释一下或者给我一个解决方案吗 Thanks 只需添加ob end clean 在标头调用之前
  • 如何在刷新后保持复选框处于选中状态?

    我需要向此代码添加什么 才能使复选框即使在刷新页面后也保持选中状态 代码示例或解释将不胜感激这是该项目的完整代码 https github com Orelso Project notes 如果您需要我添加代码的任何其他部分 请告诉我 im
  • Android 模拟器错误:- 执行 /system/bin/e2fsck 失败:没有这样的文件或目录

    我正在尝试运行我的第一个 Android 应用程序Android Emulator on API 19 The Emulator开始但没有任何反应 意味着主屏幕没有出现 这是我的第二周Android 这是 log cat 的前两行 02 2
  • Ctypes:无法导入windll

    我在 Windows 7 64 位上运行 Python 2 7 32 位 Anaconda 我想使用 ctypes 进行 win32 API 调用 但我有一个非常奇怪的问题 我可以import ctypes 但不是import ctypes
  • 如何将 P 元素内的文本放在图像旁边?

    这是我的代码 img src images example jpg width 70px p This is some example text that i want next to the image on the right hand
  • QtDesigner 和 PySide:QTableWidget 无法访问

    我在 QtDesigner 中制作了一个表单 该表单在该函数的帮助下从 PySide 加载 widget loader load file parent 但是 QTableWidget 带有 objectNname buffer table
  • 如何将响应数据设置到 TodayExtension 小部件中

    尝试从服务访问响应数据以显示到 TodayExtensions 小部件中 import Foundation struct MarketIndex Codable let indicesName String let indicesValu
  • 使用rest api时选择Azure事件中心的分区

    我正在尝试使用 python 和其余 API 向 Azure 事件中心发送消息 经过一些失败的实验后 我找到了工作代码 见下文 但我希望能够选择将事件发送到哪个分区 使用其余 API 是否可以实现这一点 如果可以 应该如何完成 user b
  • 参数分配默认值(=默认值)意味着什么? [复制]

    这个问题在这里已经有答案了 我试图理解前置条件函数并遇到 default 快速谷歌和扫描指南没有带来任何相关结果 有人可以向我解释一下吗 谢谢 func precondition condition autoclosure gt Bool
  • API-21 上的 Fragment 事务替换仍然落后

    我正在开发一个使用片段的应用程序 上周我的测试设备进行了棒棒糖更新 当我在棒棒糖设备上测试我的应用程序时 我发现 Fragment Transaction 的替换方法无法正常工作 尽管在 Kitkat 版本上一切正常 但它在 Lollipo
  • 嵌套 .pth 文件或从网络加载额外的站点目录

    目标是拥有一个通用目录 我可以在其中添加网络上的包 这些包会自动添加到sys path无需运行site addsitedir or sys path append每次我导入所述包时 有没有办法做到这一点 背景 我有一个小型用户网络 他们都需
  • 更改后无法保存 Jenkins 作业,没有可见错误

    前提 詹金斯 2 277 4Ubuntu 20 04 2 LTSopenjdk版本 11 0 11 2021 04 20 Problem 我有一份自由式工作 第一次保存所有已完成的更改 此时 保存 和 应用 按钮位于页面中底部 下次如果我进
  • NOPL在x86系统中做什么?

    NOPL在x86机器中的作用是什么 感觉好像什么也没做 但是为什么总是在汇编代码中呢 NOP是一个单字节 不执行任何操作 的操作 实际上是 无操作 NOPW NOPL 等相当于什么都不做 但会占用字和长字节 e g NOP 1byte op
  • 为什么/哪里出现错误“ 调用方法 Location.toString 的权限被拒绝”

    EDIT 我在回复评论时添加了澄清 在可能且有意义的地方 这些添加的修饰位于斜体字体样式 我已经在 Firefox 群组以及 SO 上发布了这个问题 关于 SO 至少有 25 个相关问题 其中一些代表性问题是 闪虫 跨域问题 只是一个谜 F
  • HTML / VBA 下拉菜单

    我在 VBA 和 HTML 例程方面遇到了一些问题 我必须从链接中选择https www betexplorer com next soccer 排序依据 下拉菜单并选择 联赛 项 我无法通过 VBA 执行此操作 这是我写的代码 Sub S
  • Python:哪个命令会增加 Windows 上打开文件的数量?

    关于这个主题似乎有很多问题 我似乎找不到我应该在 python 脚本中调用什么来增加打开文件限制 我知道我需要使用 setmaxstdio在 C 级别 但我不知道如何在 python 中调用它 有任何想法吗 尝试使用win32file fr
  • BSL(如何设计程序):如何将代码从单独的文件导入到定义区域?

    我对 BSL 有疑问 我想将我的代码分成单独的辅助文件并使用 require auxiliary function rkt 首先将分离的代码导入到定义区域 然而它并没有像想象的那样工作 虽然没有给出明确的错误 但似乎 DrRacket 根本