【问题标题】:How can I print definition of a symbol without evaluation in Scheme?如何在 Scheme 中打印符号的定义而不进行评估?
【发布时间】:2011-06-13 09:31:03
【问题描述】:

如果我想打印符号的函数定义,我应该怎么做?

【问题讨论】:

    标签: printing scheme symbols


    【解决方案1】:

    如果我理解正确,你想要一个函数print-function,这样之后

    (define (foo x) (cons x x))
    

    它将表现为

    > (print-function foo)
    (lambda (x) (cons x x))
    

    标准方案没有这样的功能。原因是 Scheme 实现可以并且通常确实将函数编译为不同的表示形式(字节码、机器码)。

    一些方案可能会保留函数定义;检查您的实施手册。

    【讨论】:

    • Guile 2.0 之前的版本有procedure-source。然而,自从 Guile 2.0 以来,我再也没有设法让procedure-source 工作了。但是,是的,它是非常特定于实现的,并且大多数实现不提供任何这样的东西。
    • 我正在使用 Gambit-C。你对这个实施了解吗?
    • 没有 Gambit 经验,抱歉。
    • 自 Guile 1.9.11 以来,procedure-sourcea bug 已打开。
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2020-06-11
    • 2018-03-07
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多