我正在尝试从源代码编译Bigloo Scheme,我无法弄清楚如何Bigloo在OS X 10.5(Leopard)中启用本机线程支持(我还没有读过线程不应该在这个平台上工作的任何地方).
我跑./configure,但然后在配置摘要中,我总是得到
Release features:
release number........................ 3.2a
supported backends.................... native:yes JVM:no .NET:no
default backend....................... native
additional APIs....................... fthreads pthreads ssl web sqlite ssl sqlite web multimedia mail calendar pkgcomp pkglib
native threads support................ no
openssl support....................... yes (dtls no)
sqlite support........................ sqltiny + sqlite
dynamic libraries support............. yes
bee support........................... partial
Run Code Online (Sandbox Code Playgroud)
我想Bigloo以便使用Hop,当我尝试使用如此创建的二进制文件运行它时,我总是得到警告
*** WARNING:bigloo:hop
Threads disabled, forcing "nothread" scheduler.
Run Code Online (Sandbox Code Playgroud)
任何帮助都感激不尽.
我有一个用bigloo scheme函数语言编写的解析器,我需要编译成java类.整个解析器都是作为单个函数编写的.不幸的是,这导致JVM编译器抛出"Method too large"警告,然后在localvar中给出"far label"错误.有什么方法可以绕过这个错误吗?我在某处读到了关于DontCompileHugeMethods选项,它有用吗?拆分功能对我来说似乎不是一个可行的选择:( !!
在工作中,我在尝试使用Scheme实现配置脚本时遇到了一个基本问题.为了避免发明一种人为的和受限制的语言,脚本应该包含实际的代码.稍后将对此代码进行评估.要使配置按需工作,必须能够访问某些变量.这些变量仅在评估的上下文中已知.因此,必须在当前环境中评估配置脚本.这是我所说的一个原始的例子:
(let ((a #t))
(wr "a is ..."
(eval '(if a "true" "false"))))
Run Code Online (Sandbox Code Playgroud)
运行此代码时,我总是收到一条错误消息,告诉我变量'a'未知.所以问题是:你知道如何评估当前环境中的冻结代码吗?
PS:我使用bigloo编译器.
/////////////////////////////////////////////编辑:/// ////////////////////////////////////////////////// /
当使用Chris建议的方法时,我遇到了另一个有趣的问题,即case关键字的用法.以下两个示例都使用相同的case结构,它应该触发输出"yes!".线.不幸的是,他们表现得不同
通常 - >输出是"是的!" 正如所料:
(define testit "test")
(case testit
(("test")
(begin (newline) (write "yes!") (newline)))
(else
(begin (newline) (write "no!") (newline)))))
Run Code Online (Sandbox Code Playgroud)
使用eval - >输出令人惊讶地"不":
(define env (null-environment 5))
(eval '(define testit "test") env)
(eval '(case testit
(("test")
(begin (newline) (write "yes!") (newline)))
(else
(begin (newline) (write "no!") (newline)))))
Run Code Online (Sandbox Code Playgroud)
这有任何意义吗?