| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
让Scheme和Python一样易用且实用!
金鱼Scheme 是一个 Scheme 解释器,具有以下特性:
金鱼Scheme仍旧遵循和 S7 Scheme 一样的简约的原则。目前,它仅依赖于 S7 Scheme 、tbox 和 C++98 范围内的标准库。
与 S7 Scheme 类似,src/goldfish.hpp 和 src/goldfish.cpp 是构建金鱼Scheme解释器二进制文件所需的唯一关键源代码。
形如(liii xyz)的是金鱼标准库,模仿Python标准库的函数接口和实现方式,降低用户的学习成本。
| 库 | 描述 | 示例函数 |
|---|---|---|
| (liii base) | 基础库 | ==, !=, display* |
| (liii error) | 提供类似Python的错误函数 | os-error函数抛出'os-error,类似Python的OSError |
| (liii check) | 基于SRFI 78的轻量级测试库加强版 | check, check-catch |
| (liii case) | 模式匹配 | case* |
| (liii list) | 列表函数库 | list-view, fold |
| (liii bitwise) | 位运算函数库 | bitwise-and, bitwise-or |
| (liii string) | 字符串函数库 | string-join |
| (liii vector) | 向量函数库 | vector-index |
| (liii hash-table) | 哈希表 | hash-table-empty?, hash-table-contains? |
| (liii sys) | 库类似于 Python 的 sys 模块 | argv |
| (liii os) | 库类似于 Python 的 os 模块 | getenv, mkdir |
| (liii path) | 路径函数库 | path-dir?, path-file? |
| (liii range) | 范围库 | numeric-range, iota |
| (liii option) | Option 类型库 | option?, option-map, option-flatten |
| (liii either) | Either 类型库(左值/右值) | left?, right?, either-map |
| (liii uuid) | UUID 生成 | uuid4 |
| (liii http) | HTTP 客户端库 | http-get, http-post, http-head |
| (liii json) | JSON 解析和操作 | string->json, json->string |
| 库 | 状态 | 描述 |
|---|---|---|
| (srfi srfi-1) | 部分 | 列表库 |
| (srfi srfi-8) | 完整 | 提供 receive |
| (srfi srfi-9) | 完整 | 提供 define-record-type |
| (srfi srfi-13) | 完整 | 字符串库 |
| (srfi srfi-16) | 完整 | 提供 case-lambda |
| (srfi srfi-39) | 完整 | 参数对象 |
| (srfi srfi-78) | 部分 | 轻量级测试框架 |
| (srfi srfi-125) | 部分 | 哈希表 |
| (srfi srfi-133) | 部分 | 向量 |
| (srfi srfi-151) | 部分 | 位运算 |
| (srfi srfi-196) | 完整 | Range 库 |
| (srfi srfi-216) | 部分 | SICP |
| 库 | 描述 |
|---|---|
| (scheme base) | 基础库 |
| (scheme case-lambda) | 提供 case-lambda |
| (scheme char) | 字符函数库 |
| (scheme file) | 文件操作 |
| (scheme time) | 时间库 |
金鱼Scheme自 v1.2.8 起已集成在墨干理工套件中,只需安装墨干即可安装 金鱼Scheme。
除了金鱼Scheme解释器外,墨干还提供了一个结构化的金鱼Scheme REPL。
以下是分步构建和安装指南。
在 macOS 上,推荐使用 Homebrew 进行安装:
# 添加 Goldfish 的 Tap 仓库 brew tap MoganLab/goldfish # 安装 Goldfish brew install goldfish
卸载如果需要卸载,请执行:
brew uninstall goldfish
如果您手动从源码编译,可以在 bin/gf 找到可执行文件。
金鱼Scheme 使用子命令进行不同操作:
| 子命令 | 描述 |
|---|---|
| help | 显示帮助信息 |
| version | 显示版本信息 |
| eval CODE | 求值 Scheme 代码 |
| load FILE | 加载 Scheme 文件并进入 REPL |
| repl | 进入交互式 REPL 模式 |
| run TARGET | 从目标运行 main 函数 |
| test | 运行测试 |
| fix PATH | 格式化 Scheme 代码 |
| FILE | 直接加载并求值 Scheme 文件 |
不带任何命令时,将打印帮助信息:
> gf Goldfish Scheme 17.11.38 by LiiiLabs Commands: help Display this help message version Display version eval CODE Evaluate Scheme code load FILE Load Scheme code from FILE, then enter REPL ...
version 子命令将打印 金鱼Scheme 版本和底层 S7 Scheme 版本:
> gf version Goldfish Scheme 17.11.38 by LiiiLabs based on S7 Scheme 11.5 (22-Sep-2025)
eval 子命令帮助您即时求值 Scheme 代码:
> gf eval "(+ 1 2)"
3
> gf eval "(begin (import (srfi srfi-1)) (first (list 1 2 3)))"
1
> gf eval "(begin (import (liii sys)) (display (argv)) (newline))" 1 2 3
("bin/gf" "eval" "(begin (import (liii sys)) (display (argv)) (newline))" "1" "2" "3")
load 子命令帮助您加载 Scheme 文件并进入 REPL:
> gf load tests/goldfish/liii/base-test.scm ; 加载文件并进入 REPL
您也可以直接加载并求值 Scheme 文件:
> gf tests/goldfish/liii/base-test.scm ; *** checks *** : 1973 correct, 0 failed.
-m 或 --mode 帮助您指定标准库模式:
Goldfish 启动时也支持额外的库搜索目录:
例如:
gf -I ~/.local/goldfish/liii-goldfix eval "(begin (import (liii goldfix)) 'ok)"启动时,Goldfish 还会自动把 ~/.local/goldfish/ 下所有名称匹配 xxx-yyy 且至少包含一个 .scm 文件的目录前置到库搜索路径中。
金鱼Scheme x.y.z 表示它使用的是 tbox 版本 x,基于 S7 Scheme y,而 z 是补丁版本。例如,金鱼Scheme 的第二个版本是 17.10.1,表示它使用tbox 1.7.x,基于 S7 Scheme 10.x,补丁版本是 1。
金鱼Scheme 是为了克服 S7 Scheme 的缺陷而实现的:
金鱼Scheme 根据 Apache 2.0 许可证授权,一些源自 S7 Scheme 和 SRFI 的代码片段已在相关源文件中明确声明。
读者可以用以下的BibTeX代码来引用我们的工作.
@book{goldfish,
author = {Da Shen and Nian Liu and Yansong Li and Shuting Zhao and Shen Wei and Andy Yu and Siyu Xing and Jiayi Dong and Yancheng Li and Xinyi Yu and Zhiwen Fu and Duolei Wang and Leiyu He and Yingyao Zhou and Noctis Zhang},
title = {Goldfish Scheme: A Scheme Interpreter with Python-Like Standard Library},
publisher = {LIII NETWORK},
year = {2024},
url = {https://gitee.com/LiiiLabs/goldfish/releases/download/v17.10.9/Goldfish.pdf}
}
| Back | FazBrowse Home | New Git URL |