racket - 如何从涂鸦/文本重新导出#%module-begin 等?
问题描述
我想要一种像涂鸦/文本这样的语言,但提供了一些额外的功能。这是我尝试过的:
#lang racket/base
(require scribble/text)
(provide (all-from-out scribble/text)
hello)
(define (hello name)
(format "Hello ~a!" name))
当我尝试运行用这种语言编写的模块时,我收到一条消息,指出该模块的语言中没有 #%module-begin 绑定。
我假设 scribble/text 具有#%module-begin 的绑定,否则当我将它用作#lang 时它是如何工作的?
也许 scribble/text 知道我使用 'require' 而不是 #lang 来导入它,所以我不会自动获取 #% 宏?如果是这种情况,那么我将如何获得它们并重新出口它们?
还是这里发生了其他事情?
解决方案
语言#lang scribble/text
和库(require scribble/text)
是不同的模块。库版本不提供#%module-begin
或来自球拍的其他绑定:
当
scribble/text
使用 viarequire
而不是#lang
, then .... 它不包括racket/base
....的绑定
#lang scribble/text
实际使用的模块语言是scribble/text/lang
. 所以你可以像这样修复你的模块语言:
#lang racket/base
(require scribble/text/lang)
(provide (all-from-out scribble/text/lang)
hello)
(define (hello name)
(format "Hello ~a!" name))
但是,该模块scribble/text/lang
未记录在案,因此使用风险自负。
推荐阅读
- excel - VBA code to bold selected words in table makes Excel sheet lag
- java - SharedPreferences: Storing multiple values as a list
- python - Reused parameter value in Python between different calls
- snowflake-cloud-data-platform - 为了在模式中创建表,角色需要的完整权限列表是什么?
- python-3.x - print something at import only
- ios - IOS - Print image to Phomemo M02 Mini Bluetooth Thermal Printer using CoreBluetooth in Swift 5?
- css - @media queries for mobile - Portrait vs Landscape
- sql - How to create a SQL FUNCTION that gets column value from string column SQL
- android - How to set text of multiple codes in one text view
- javascript - 如何使用 React-router-dom 版本 6 useNavigate 和 typescript 传递参数