问题标签 [guile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macros - 为什么这个 lisp 递归宏不起作用?
我在诡计中有宏 let-- (比如 let* 使用 lambdas ):
当我使用外部函数进行代码生成时它工作正常,但下面的代码(只是一个宏)不起作用:
为什么?
fifo - GNU-GUILE 中 Fifo 的实现
我想做以下事情:
我想使用 GUILE 在普通文件中实现 FIFO 的概念。
两个进程应该通过一个普通的文本文件进行通信,如果需要,第三个进程可以访问。
原来两个进程的从属应该一行一行的写在文件中,也就是追加。到目前为止,一切都很好。(在 C++ 中实现)
然而,主进程应该将此文件视为 FIFO,它应该读取第一行,并执行相应的操作,并删除第一行,其余部分保持不变。
问题是:
- 当 Master 访问文件时,从属可能会到达必须在那里写入的点,从而导致冲突。
- 弹出第一行可能需要读取整个文件,在一个字符串中,弹出第一个文件,然后保存它,这是内存密集型的,第二个保存操作可能再次与试图在那里写的孩子发生冲突,
我想在 GUILE 中实现这一点,因为它是官方的操作系统扩展语言,可能有更好的方法来解决上述两个问题。
但是在网络上,我找不到太多可以定位的东西。请帮忙,抱歉这个问题比具体问题少,然后我没有要显示的代码片段。
scheme - `#:` 在 Guile 中是什么意思?
我通常使用 MIT/GNU Scheme,但在 github ( guile-2d ) 中找到了一些 Guile 代码。
我首先检查了 MIT/GNU Scheme 参考,它出现了额外的符号,但其中没有任何内容#:
。
然后,我浏览了 Guile 手册,发现了一些提及(Profile Commands,Debugging Commands),看起来可能指定了可选参数?Python中类似的东西:
有谁确切知道这意味着什么?
scheme - 方案中嵌套定义的体面方式
我想foo
使用一个辅助函数来定义一个常量,比如bar
. 我想隐藏bar
在 的定义中foo
,所以我提供了以下代码:
然而,这个定义在许多方案实现(mit-scheme、racket、guile 等)中会导致语法错误。
我有三种解决方法,但似乎都不令人满意:
foo1
使用 lambda 来创建编写辅助定义的环境,括号似乎有点令人困惑。
foo2
使用 let 表达式,但我不能再使用语法糖(define (f n) ...)
=>(define f (lambda (n) ...))
foo3
与原始值相比,需要较少的修改,但每次我想要这个值时,我都必须重新调用(foo3)
并重新计算。
我的问题是:
- 我认为这种嵌套定义是有道理的,但为什么会被认为是语法错误呢?
- 有什么体面的方法来写 的定义
foo
吗?
ubuntu - ubuntu 12.04 上的 guile 给出“输入语言环境转换错误”
运行 guile(以交互模式或使用脚本)在我的 ubuntu 12.04 上出现此错误:-
关于如何调试的任何输入也将有所帮助。
scheme - let 中的 read-line 不会读取下一行
上面的代码无法将第二行读入 l。相反,它只是两次读取相同的值:-
当 line1 后跟 line2 作为输入时,它显示 line1 作为输出而不是 line2 。这里发生了什么?
mit-scheme - 保留过程中定义的变量?
我写了一个程序(do-test)
。由于测试可能对变量有一些影响env
,我env
在里面定义do-test
了希望env
程序不会携带它,所以每次运行它,我都会得到一个新的环境来工作。令我惊讶的是,我的测试程序居然携带了以前的env
. 请找到以下代码:
我尝试使用 mit-scheme / guile / codepad.org 运行此代码,所有这些都告诉我运行(do-test)
两次会产生不同的结果。
但是,如果我将行更改(define env '(1))
为(define env (list 1))
,我会得到预期的结果。(您可以在 codepad.org 中找到更改前后的代码)
据我所知,'(1)
应该(list 1)
是相同的,除了第二个将调用过程list
。
我想知道为什么会发生这种情况以及如何防止程序重用以前的值?
scheme - 我可以将符号列表分配给 Guile 中的元素列表吗?
我正在编写一些获取设定长度列表的诡计代码,我需要为列表中的每个元素定义一个变量。目前,我必须做这样的事情:
这变得超级乏味。无论如何我可以做这样的事情吗?
编辑:使问题更加狡猾。
scheme - 调用过程 n 次的方案函数
方案是否具有调用函数 n 次的函数。我不想要 map/for-each 因为该函数没有任何参数。类似这样的东西:-
scheme - NZEC 在 INVCNT 上与 Guile 在 Spoj 上
我使用以下INVCNT代码获得NZEC
请问有什么提示吗?