首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用kawa从Java调用方案函数,但返回列表的一半被省略并替换为三个点(...)

使用kawa从Java调用方案函数,但返回列表的一半被省略并替换为三个点(...)
EN

Stack Overflow用户
提问于 2013-05-18 02:53:28
回答 1查看 401关注 0票数 1

我编写了以下方案函数,在Dr球拍中调用时,该函数按预期工作,但在使用kawa调用时,它只返回结果的一半。

代码语言:javascript
复制
(define getYValues (lambda (f base lst)
              (if (null? lst) 
              base
              (cons (f (car lst)) (getYValues f base (cdr lst)))
              )
      )
)

用于测试的值包括:

代码语言:javascript
复制
(getYValues 
(lambda (x)
    (* x x)
    )
 '() 
'(-5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 ))

在Dr球拍中,它返回正确的结果:(25.0 20.25 16.0 12.25 9.0 6.25 4.0 2.25 1.0 0.25 0.0 0.25 1.0 2.25 4.0 6.25 9.0 12.25 16.0 20.25)

但是使用kawa从我们的Java应用程序调用它,它返回:(25.0 20.25 16.0 12.25 9.0 6.25 4.0 2.25 1.0 0.25 ...)

有没有人知道为什么名单被删掉了,其中一半被……取代?

我使用Scheme.eval来调用函数

更新/解决方案

下面的代码解决了我的问题:

代码语言:javascript
复制
LList list = new LList();
try {
    list = (LList)scm.eval(schemeCall);
} catch (Throwable e) {
    e.printStackTrace();
}
double[] yValues = new double[LList.length(list)];
for (int i = 0; i<yValues.length;i++) {
    yValues[i] = ((DFloNum) list.get(i)).doubleValue();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-18 04:39:42

胡乱猜测:列表可能是完整的,但出于演示的目的,只显示了其中的一部分-其余部分假定在...部分中。要检查并打印列表的length,即使没有显示所有元素,它也必须是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16616040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档