我希望使用MIT方案以图形方式绘制函数.在方案手册中,有一个名为"图形"的部分 - 引用:
MIT Scheme has a simple two-dimensional line-graphics interface that is
suitable for many graphics application.
Run Code Online (Sandbox Code Playgroud)
如果您遇到过这种情况,请通过粘贴与MIT /方案一起使用的最小工作代码(KISS原则)帮助我,并绘制一些东西.
我想从makefile评估一个脚本并退出,就像这样
mit-scheme --load "fact.scm"
Run Code Online (Sandbox Code Playgroud)
但是,在评估文件后,它不会退出,并显示repl; 如果我尝试(exit)原语,它会要求确认y/n.有可能解决这个问题吗?
我对这个例子的结果有点困惑:
(define mk-q
(lambda ()
(let ([l '(x)])
(cons l l))))
(define q (mk-q))
q
=> ((x) x)
(set-car! (cdr q) 'y)
=> ((y) y)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么两个x原子都被set-car!程序所取代(我对结果的第一个猜测是什么((x) y))?
例如:
(define mk-q2
(lambda ()
(let ([l '(x)])
(cons l (cons l l)))))
(define q2 (mk-q2))
(set-car! (cdr q2) 'y)
=> ((x) y x) which fits my understanding of set-car!
Run Code Online (Sandbox Code Playgroud)
为什么x第一个例子中的两个都被替换了?
我正在尝试使用 MIT 方案(在 GNU/Linux 下运行的 MIT/GNU 方案,版本 7.7.90.+ || Microcode 15.1 || Runtime 15.7)运行方案程序,我想访问命令行参数。
我查看了文档,但没有找到任何具体内容。我尝试过命令行,但收到一条错误消息:
;Unbound variable: command-line
Run Code Online (Sandbox Code Playgroud)
我是否必须加载一些库才能使用命令行,或者是否有其他功能?
我试图通过"The Little Lisper"并在第一章中遇到障碍.我对Emacs比较陌生(这激发了我学习Lisp和clojure的兴趣).我下载了Mit-scheme app,正在Edwin上练习.
我尝试着:
(atom? (cons a l))
Run Code Online (Sandbox Code Playgroud)
其中a是原子,l是已定义的列表.我收到以下错误:
;Unbound variable: atom?
Run Code Online (Sandbox Code Playgroud)
为什么?我使用"null"没有问题吗?功能.我以为"原子?" 是一个内部函数,检查返回的值是否为原子.
任何解释都将非常感激.我仍然没有设置我的emacs来运行方案,所有lisp方言之间的细微差别正在测试我的耐心.
作为一个实验,我尝试从 Portable C 发行版开始引导 MIT 方案。
etc/make-liarc.sh我使用随后的构建了第一个安装make install。这构建并安装了一个有效的(据称)MIT 方案。dox 说这不是原生构建。
所以...我解压了unix源代码发行版,并在构建运行时、sf、cref和编译器后执行了configureand which barfs,抱怨“./tools/syntaxer.com”没有作为上述安装的一部分安装。make
所以...我再次解压 unix 源发行版,然后尝试etc/make-native.sh。这将构建运行时、sf 和 cref,然后在尝试编译编译器时构建 barfs。它抱怨未绑定的变量 cref/generate-trivial-constructor。
我的问题——是否可以从可移植 C 发行版引导到本机构建?如果是这样,怎么办?
我创建了一个abc.scm文件,并尝试在 Ubuntu 的终端中使用“ guild compile ”、“ scm ”和“ guile ”命令将其编译为二进制文件(或任何编译为的 guile 方案)。
对于“ guild compile abc.scm ”,我得到的输出“写为‘/home/tarunmaganti/.cache/guile/ccache/2.0-LE-8-2.0/home/tarunmaganti/abc.scm.go’ ”我找到了文件并像这样运行 - “ ./abc.scm.go ”表示权限被拒绝。
当我使用“ chmod 755 ”或“ chmod 777 ”授予必要的权限时,出现类似 - “ bash: ./abc.scm.go: cannot execute binary file: Exec format error ”的错误。
“ scm what-file-name.scm ”只是打开scm解释器。
" guile 任何文件名.scm什么都不做。
官方 GNU/Guile Scheme 的链接不是很有帮助。
请帮我。我想创建一个 guile 方案脚本文件。编译它并将其作为 C/C++ 程序运行。是否可以?如果无法编译,我想知道,如何至少运行GNU/guile 方案或MIT-Scheme的脚本文件。
{非常感谢逐步介绍,我仍然是使用 Ubuntu 和 Scheme 的初学者。}
提前致谢。
我正在寻找一个成熟且维护良好的 Scheme 编译器,它可以在(每个)Windows (.exe)、Mac OS X 和 Linux 上生成独立的本机代码可执行文件。可执行文件不需要 GUI - 只需标准文本 IO (stdin/stdout/stderr) 就可以了。您会推荐哪种编译器满足这些要求?
一个相关(但不同)问题的答案表明 Gambit-C。根据提交日志,它似乎仍然处于活动状态。还有其他竞争对手吗? 麻省理工学院计划似乎不经常更新 - 我说得对吗?
谢谢!
PS 回复评论:对我来说,自 R4RS 以来的任何版本的 Scheme 都可以,但丰富的 SRFI 支持可能更重要。
另一条评论建议使用CHICKEN,它似乎也很活跃。它还建议Racket,它是一个字节码编译器,但具有 JIT 并且可以创建一个独立的包。(我还没有检查 Chez Scheme。我在这里“复制”这些“答案”,因为问题被搁置,即使按照指示编辑后似乎也无法重新打开......)
我试图了解Scheme元循环求值器如何以不同于符号数据的方式处理引用表达式。
接受的答案 Stack Overflow 问题lisp/scheme 中的符号到底是什么?在Scheme中定义了“symbol”数据对象:
在Scheme和Racket中,符号就像一个不可变的字符串,恰好被保留
接受的答案写道,在Scheme中,标识符和符号之间存在内置的对应关系:
要调用方法,您可以查找与方法名称相对应的符号。Lisp/Scheme/Racket 使这变得非常容易,因为该语言已经在标识符(语言语法的一部分)和符号(语言中的值)之间建立了内置的对应关系。
为了理解对应关系,我阅读了“方案及其实现简介”中的“关于标识符的注释”页面,其中说
方案标识符(变量名称和特殊形式名称和关键字)与方案符号对象字符序列具有几乎相同的限制,这并非巧合。大多数Scheme的实现都是用Scheme编写的,并且在解释器或编译器中使用符号对象来表示变量名。
基于上述内容,我想知道我对以下会话中发生的事情的理解是否正确:
user@host:/home/user $ scheme
MIT/GNU Scheme running under GNU/Linux
Type `^C' (control-C) followed by `H' to obtain information about interrupts.
Copyright (C) 2011 Massachusetts Institute of Technology
This is free software; see the source for copying conditions. There is NO warranty; not even for
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Image saved on Sunday February 7, 2016 at 10:35:34 AM
Release 9.1.1 …Run Code Online (Sandbox Code Playgroud) mit-scheme ×10
scheme ×9
lisp ×3
compilation ×1
guile ×1
identifier ×1
interpreter ×1
racket ×1
symbols ×1