racket

    8热度

    1回答

    我想写一个宏,它定义了一个具有关联函数的特殊类数据结构。 我知道这是可能的;它在核心语言中多次完成。 作为一个具体的例子,我将如何在Scheme中定义define-struct宏。它需要创建make-struct,struct-<<field>>等功能。 我试着用define这样做,但是,这只是在宏的词法范围中定义函数。 我怎样才能在宏中定义一个函数?

    2热度

    2回答

    我想看看我是否可以将球拍结构字段映射到数据库中的列。 我已经想通了如何使用第四返回值来提取结构的访问函数在PLT方案: (struct-type-info) 但是使用整数返回程序的索引到结构。有什么方法可以找出字段名称在定义点上的位置?查看文档后,似乎在定义结构并仅通过生成的访问器函数存在此信息后“忘记”:(<id>-<field-id> s)。 所以我能想到的两种可能的解决方案: 搜索命名空

    3热度

    2回答

    如何在Scheme中使用数组? 特别是,我试图使用memoization实现递归斐波那契过程。数组是否存在于Scheme中? 如果不是,我该如何实现记忆?

    4热度

    1回答

    我早些时候问过一个有关数组在方案中的问题(原来他们被称为矢量,但基本上与您所期望的相同)。 有没有一种简单的方法来做多维 阵列 矢量在PLT计划虽然吗?为了我的目的,我想要一个叫做make-multid-vector的程序。 顺便说一句,如果这还不存在,我不需要一个完整的代码示例如何实现它。如果我必须自己滚动,我会欣赏一些大方向。我可能会这样做的方式是迭代遍历矢量的当前最高维度的每个元素以添加另一

    0热度

    1回答

    例如,看看这个代码(从tspl4): (define proc1 (lambda (x y) (proc2 y x))) 如果我跑这是我的计划方案...... #!r6rs (import (rnrs)) (define proc1 (lambda (x y) (proc2 y x))) 我得到这个错误: expand: unbound ide

    2热度

    4回答

    我很困惑这个代码是如何工作的: (define m (list 1 2 3 '(5 8))) (let ((l (cdr m))) (set! l '(28 88))) ==>(1 2 3 (5 8)) (define o (list 1 2 3 '(5 8))) (let ((l (cdr o))) (set-car! l '(28 88))) ==> (1 (28 88) 3 (5

    3热度

    4回答

    给定一棵树,我想找到从根到每个叶子的路径。 所以,对于这种树: D / B /\ A E \ C-F-G 具有从根目录(A)到叶(d,E,G)以下路径: (A B D), (A B E), (A C F G) 如果我表示上文作为树(A (B D E) (C (F G)))则函数g的伎俩: (define (paths tree) (cond ((empt

    5热度

    4回答

    我已经开始学习Scheme了,主要是为了好玩,因为我之前从未使用过一种功能性语言。我选择了Scheme,因为我想长时间阅读SICP。 无论如何,我目前正在学习列表,在此之前,我了解了cons,car和cdr。还有的创建名单的有缺点的列表,像这样的例子: (cons (list 1 2) (list 3 4)) 结果列表是((1 2)3 4),这没有任何意义对我来说,我希望(( 1 2)(3 4

    4热度

    1回答

    我有一些麻烦了解以下 计划程序的行为: (define c (dynamic-wind (lambda() (display 'IN)(newline)) (lambda() (call/cc (lambda (k) (display 'X)(newline) k))) (lambda() (display 'OUT)(n

    4热度

    1回答

    我是Scheme新手,我非常喜欢它的一流/高级功能。但是,我的数据来自一个带有面向对象API的COM源。 我知道Scheme和COM属于不同的编程范例,但我想知道是否有任何接口或方式来连接到COM源的方案吗?