- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有类似 (declare (indent defun))
的东西,以便用户定义宏的缩进像 define
s 一样工作?
例如,如果我编写以下宏,
(define-syntax my-when
(syntax-rules ()
((my-when condition exp ...)
(if condition
(begin exp ...)))))
然后,我得到看起来像这样的缩进,
(my-when #t
(write "hi"))
但更喜欢以下内容
(my-when #t
(write "hi"))
在 elisp 中,我可以通过以下方式获得所需的缩进
(defmacro my-when (condition &rest body)
(declare (indent defun))
`(if ,condition
,@body))
(my-when t
(message "hi"))
版本/模式注释:emacs 26,scheme-mode
w/geiser
,geiser-impl--implementation
= guile
最佳答案
为符号添加缩进提示:
(put 'my-when 'scheme-indent-function 1)
这或多或少是 (declare (indent 1))
在 defmacro
中所做的事情。
lisp-mode
使用 lisp-indent-line
,它会查找符号上的 lisp-indent-function
属性。内置的 scheme-mode
使用 lisp-indent-function
,因此您可能会认为它的工作方式就像在 lisp-mode
中一样。但是,属性名称需要与模式名称匹配。请参阅https://www.gnu.org/software/emacs/manual/html_node/elisp/Indenting-Macros.html#Indenting-Macros获取属性的值。
关于emacs - emacs 中的 guile 宏缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43959836/
我想发现 guile 生态系统。我看了看怎么安装a library我没有找到包管理器,比如 python 的 pip . guile 有这种东西吗? 最佳答案 看起来像 guildhall是最接近 p
我是 configure.ac 的新手,我正在尝试创建一个简单的程序,它只会在用户调用时使用 GNU guile 库: configure --with-guile 所以程序应该是这样的: #incl
在 Emacs Lisp 中 (boundp 'symbol) 如果 symbol 绑定(bind)到某个值,则返回 t,nil否则。 Guile Scheme 中是否有等效的程序? 最佳答案 方案避
在 Emacs Lisp 中 (boundp 'symbol) 如果 symbol 绑定(bind)到某个值,则返回 t,nil否则。 Guile Scheme 中是否有等效的程序? 最佳答案 方案避
我编写了一个代码,它使用惰性求值来产生无限的数据结构,但是有一个错误。 这是代码: #!/usr/bin/guile \ -e main -s !# (define ints-f (lambd
我不熟悉 guile 和 scheme,我现在想做的是获取一个 scheme 文件 (file.scm) 并将其加载到一个变量中,这样我就可以解析它,我无法在任何地方找到如何执行此操作。 我现在有的是
我听说大多数 lisps 支持将运行程序的图像保存到文件中。 guile 支持这个吗? 最佳答案 我认为与其他语言的互操作是 Guile 不可或缺的一部分,因此解释器图像中有很多状态对 Guile 本
最近开始学习使用自动工具,并一直在尝试用它制作一个简单的 Guile 程序。 Following this tutorial我让程序成功编译,.go 文件放在 %site-ccache-dir 中,.
我正在尝试在我的 WSL Ubuntu 20.04 安装中安装 libgraph。我安装了所有必要的软件包。但是当我尝试配置 libgraph 时,它失败了: $ ./configure checki
我想在 Guile 中创建两个进程,并将其中一个的输出(stdout)作为输入(stdin)发送到另一个。 使用以下示例,如何做到这一点? echo "foo bar" | wc 输出: 1
我正在使用 Guile与 Geiser 一起使用在 Emacs 下学习如何在 Scheme 中编程。我发现每次我打错字或输入错误的代码时,Guile 都会进入调试器,这实际上是一个障碍。在 Emacs
我在 OS X 上的 Guile 1.8.8 解释器中练习Scheme。我注意到一些有趣的事情。 这是expt函数,它基本上是求幂expt(b,n) = b^n: (define (square x
我通常使用 MIT/GNU Scheme,但在 github ( guile-2d) 中发现了一些 Guile 代码。 (define main-menu (make-scene "Main
上下文: 我目前正在编写 generate-ninja-build.scm git commit cb7530e3ff10 中的脚本我的 GPLv3+ 项目 bismon (由 H2020 研究项目资
我为 Guile 开发了一个扩展模块,用 C 语言编写。这个扩展模块嵌入了一个 Python 解释器。 由于这个扩展模块调用了 Python 解释器,我需要验证它是否正确管理了 Python 对象占用
我正在尝试构建 Guile 2.2。 我已经将 libunistring 安装到 /path/to/libunistring。 当我运行时 ./configure --with-libunistrin
; Having this definition that creates identifier `self' (define-syntax alambda (lambda (stx) (
是否有类似 (declare (indent defun)) 的东西,以便用户定义宏的缩进像 defines 一样工作? 例如,如果我编写以下宏, (define-syntax my-when (
我试图让 guile-gnome 与安装在我机器上的 Guile 一起工作。我已经根据 the instructions here 下载并构建了 guile-gnome ,但无论我给它什么前缀,我似乎
我正在尝试写 let over lambda defmacro/g!在诡计中。我有这个: (use-modules (srfi srfi-1)) (define (flatten x) (le
我是一名优秀的程序员,十分优秀!