【问题标题】:Return #nil in a Guile extension在 Guile 扩展中返回 #nil
【发布时间】:2020-10-21 07:10:31
【问题描述】:

我知道有几个单例可用于从 Guile C 扩展函数快速返回“通用”值,例如:

SCM_UNSPECIFIED
SCM_BOOL_F

和其他人。

我希望从 C 函数返回 #nil 会同样简单,但我还没有找到合适的常量或正确的方法。

返回 NULL 是不行的。

所以,问题是:如何从 C 扩展函数返回 #nil

如果这样做相对复杂,是否有原因(例如,返回 #nil 在 Scheme 中可能不是惯用的)?

【问题讨论】:

    标签: c scheme guile


    【解决方案1】:

    我想我已经找到了一种方法,虽然不一定是最好的。

    有一个:

    SCM_ELISP_NIL
    

    由于名称中的 ELISP,我不屑一顾(事实证明,有充分的理由)。

    原来它返回了一个正确的#nil,并且粗略地检查了 C 代码,发现它不是更特定于 Guile 的东西的别名。

    我自己的解释是 #nil 不是惯用的,而是为 ELISP 可移植性提供的东西,我可能应该返回一个空列表。

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 2016-11-29
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      相关资源
      最近更新 更多