标签: guile

Lisp Web框架?

对于各种风格的LISP,流行的(好的,流行的是相对的)Web框架有哪些?

lisp scheme guile

60
推荐指数
10
解决办法
2万
查看次数

Guile Scheme解释器中的奇怪乘法行为

Guile 1.8.8在OS X的口译员中练习Scheme .我发现了一些有趣的东西.

这里的expt函数基本上是取幂的expt(b,n) = b^n:

 (define (square x) (* x x))
 (define (even? x) (= (remainder x 2) 0))
 (define (expt b n) 
      (cond ((= n 0) 1)
        ((even? n) (square (expt b (/ n 2))))
        (else (* b (expt b (- n 1))))
      ))
Run Code Online (Sandbox Code Playgroud)

如果我尝试一些输入

 > (expt 2 10)
 1024
 > (expt 2 63)
 9223372036854775808
Run Code Online (Sandbox Code Playgroud)

这是一个奇怪的部分:

 > (expt 2 64)
 0
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,直到n=488它停留在0:

 > (expt 2 487)
 0 …
Run Code Online (Sandbox Code Playgroud)

scheme guile mit-scheme

37
推荐指数
2
解决办法
6018
查看次数

Guile和Emacs?

我正在学习Emacs Lisp,我遇到了这个十年前的帖子,说在某些时候Guile(Scheme)将取代Emacs Lisp,或者Emacs将被Guile重写.

https://web.archive.org/web/20081201143448/http://sanpietro.red-bean.com/guile/guile/old/3114.html

我想知道这是否还有可能,并且开发人员是否应该尝试用这个来编写Elisp?最初的目标是让Guile向后兼容Elisp,但似乎开发Scheme是更好的选择.

emacs elisp guile

20
推荐指数
3
解决办法
5234
查看次数

Guile Scheme和Standard Scheme之间的区别(在Racket IDE中)?

我有一堆"传统"Guile Scheme代码,我想在Racket Scheme IDE中运行.似乎有足够的差异使这成为一项非平凡的工作.(我的计划知识水平是完成The Little Schemer的水平).

我的问题是:

  1. Guile Scheme和Standard Scheme(在Racket IDE中)有什么区别?
  2. 鉴于这些差异,一般而言,我需要采取哪些步骤将一些Guile计划代码转换为标准计划?

附加:(对Racket Scheme和R5RS/R6RS之间的分歧感到满意) - 我想要的是在Racket IDE中运行'某些东西 - 而不是Racket语言.

scheme guile r6rs racket r5rs

14
推荐指数
1
解决办法
3505
查看次数

方案:重新定义预定义运算符时为什么会出现这种结果?

+在使用的方案程序中重新定义运算符时,我收到了意外的结果guile.我应该指出,这是在尝试理解语言时发生的; 这里没有尝试编写有用的程序.

这是代码:

(define (f a b) 4)

(define (show)
  (display (+ 2 2)) (display ",") (display (f 2 2)) (newline))

(show)
; guile & mit-scheme: "4,4"

(define (+ a b) 5)
(define (f a b) 5)

(show)
; mit-scheme: "5,5"
; guile: "4,5" - this "4" is the unexpected result

(define (show)
  (display (+ 2 2)) (display ",") (display (f 2 2)) (newline))

(show)
; guile & mit-scheme: "5,5"
Run Code Online (Sandbox Code Playgroud)

guile函数中show使用了预定义的定义,+即使在我重新定义它之后,它也使用了新的定义 …

scheme guile operators

10
推荐指数
1
解决办法
309
查看次数

如何在mzscheme/guile REPL中使用箭头键?

当我输入guile或mzscheme的REPL时

(define x 15)
Run Code Online (Sandbox Code Playgroud)

然后按箭头键我得到(定义x 15)^ [[D.

这是一个终端问题吗?或者需要配置什么?为简单的编辑重写一行是很痛苦的

terminal guile read-eval-print-loop

9
推荐指数
1
解决办法
594
查看次数

如何在 GNU Make 中更改当前目录

我想将带有源的目录与带有目标的目录分开。似乎从 Makefile 更改当前工作目录应该是最简单的解决方案。

由于以下缺点,明确的目标路径是不够的:

  1. Makefile 中的冗余代码,因为对目标的每个引用都应以变量为前缀。
  2. 更复杂的命令行来构建特定的中间目标(更糟糕的调试)。

另请参阅Pauls 的规则 #3

如果目标构建在当前工作目录中,那么生活是最简单的。

关于 VPATH——我也同意要求开发人员“在运行 make 之前切换到目标目录是一种痛苦”。

makefile guile gnu-make

9
推荐指数
3
解决办法
2万
查看次数

如何使用Script-Fu解析基本文件名

从gimp.org下载使用Gimp 2.6.6 for MAC OS X(在X11下).

我正在尝试使用Script-Fu自动化无聊的手动过程.我需要解析图像文件名以使用原始文件名上的后缀将各种图层保存为新文件.

我最初的尝试是这样的,但失败了,因为(string-search ...)似乎在2.6下没有(脚本引擎的更改?).

(set! basefilename (substring filename 0 (string-search "." filename))) 
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用此信息使用正则表达式解析基本文件名,但(re-match-nth ...)也无法识别.

(if (re-match "^(.*)[.]([^.]+)$" filename buffer)
    (set! basefilename (re-match-nth orig-name buffer 1))
    )
Run Code Online (Sandbox Code Playgroud)

虽然从向量中拉出值没有错误,但在传入时,结果值不会被视为字符串(string-append ...).

(if (re-match "^(.*)[.]([^.]+)$" filename buffer)
    (set! basefilename (vector-ref buffer 1))
    ) 
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是,我将如何解析基本文件名?

scheme guile gimp script-fu

8
推荐指数
4
解决办法
6107
查看次数

何时使用带有"裸"形式参数的lambda定义?

我正在学习Guile Scheme,在文档中我突然遇到了以下构造:

((lambda args (display args)) 42)
=> (42)
Run Code Online (Sandbox Code Playgroud)

这让我陷入了困境; 直到这一点,我假设正式参数始终包含在列表中:

((lambda (args) (display args)) 42)
=> 42
Run Code Online (Sandbox Code Playgroud)

我想知道何时使用这个变体,以及它如何与可变数量的参数的点表示法不同.具体来说,以下两个变体之间有什么区别:

((lambda args (display args)) 1 2 3)     => (1 2 3)
((lambda (. args) (display args)) 1 2 3) => (1 2 3)
Run Code Online (Sandbox Code Playgroud)

是否存在差异 - 也许是为了更复杂的例子 - 我需要注意并且是否有理由更喜欢一个而不是另一个?

lambda scheme guile

8
推荐指数
1
解决办法
608
查看次数

如何在 Guile 中使用 SRFI-1?

我试图在诡计中使用 srfi-1。我使用以下代码来包含 srfi:
(use-modules (srfi srfi-1))

但是,我收到一条错误消息,说 srfi 可能未定义。我应该如何使用srfi?

我试着用谷歌搜索这个问题,但似乎我是第一个遇到这个问题的人。

scheme guile

7
推荐指数
1
解决办法
774
查看次数