lisp java_从Java调用的LISP代码

长篇小说:

我正在为我的函数编程类做一个项目,我想到在Lisp中为

Mario AI competition

.

我正在研究从Java调用LISP代码的框架/库/方式,甚至更好的LISP Java互通信。

我看过

Jacol

但它是旧的,对我来说也不是很好。

到目前为止,我的最佳选择是:

Jatha

.

它真的很整洁,虽然一些Lisp构造还没有实现,但是可以很容易地定义自己的构造。例如

地图车

康德

未实现。

我已经实现了我自己的

地图车

命名

马普

像这样的Lisp:

(defun map* (f l r)

(if (null l)

r

(map* f (rest l) (cons (funcall f (first l)) r))))

(defun mapp (f l)

(reverse (map* f l nil)))

现在我有一个简单的函数,它使用这个函数,例如,一个非线性列表中有多少个原子的函数

(defun myfunc (l)

(if (atom l)

'1

(apply '+ (mapp 'myfunc l))))

(myfunc '(6 2))

这一切在

CLSIP

现在从Java中调用LISP代码

贾萨

. 所有人必须做的就是在Java项目中导入JATA库,然后加载一个像这样的LISP文件(EX):

import org.jatha.*;

import org.jatha.dynatype.*;

public class Main {

public static void main(String[] args) {

Jatha lisp = new Jatha(false, false);

lisp.init();

lisp.start();

LispValue file = lisp.makeString("X:\\lispproject\\test1.lisp");

LispValue rez1 = lisp.load(file);

}

}

虽然该代码在clisp和其他实现中运行良好,但此代码会产生stackoverflow

run:

APPLY: fn = +, args = ((1 1))

S: ((+ (QUOTE 1) (QUOTE 1)))

Exception in thread "main" java.lang.StackOverflowError

at java.lang.Long.toString(Long.java:242)

at java.lang.Long.toString(Long.java:100)

at java.lang.String.valueOf(String.java:2946)

at org.jatha.dynatype.StandardLispInteger.toString(StandardLispInteger.java:113)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:174)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:153)

at org.jatha.dynatype.StandardLispCons.toString(StandardLispCons.java:152)

at org.jatha.dynatype.StandardLispCons.toStringAsCdr_internal(StandardLispCons.java:17

所以我的问题是,为什么要这样做?我的密码错了吗?

这是贾莎的虫子吗?你自己看看,不需要很长时间就可以设置。

你做过类似的事情吗?

你知道其他更好的方法吗?我只想从Java调用一些LISP代码,使其被执行,并返回由LISP代码计算的结果。

谢谢。

[编辑]修复了代码,粘贴了错误的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java将图片上传数据库_〔技巧实例〕轻松实现将上传图片到数据库

很久就想自己写一写程序了,不过由于赖就不想写我,今天刚好有空,所以写了这个小小的程序很容易一看就知道的,不多说了就此开始:我们做一个上传的。数据据库的字段就id自动编号 big 字段类型是 OLE 呵呵就简单的那个字段…

mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)

下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句)&#xff0c;该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息&#xff0c;排序条件可以没有调用方式&#xff1a;call GetUsersDynamic(age<30,);/********动态查询用户的信息********/CREATE PRO…

java 注释 depredated_depredated是什么意思_depredated怎么读_depredated翻译_用法_发音_词组_同反义词-新东方在线英语词典...

双语例句1.Theentireareahasbeendepredatedinthewar.整个地区在战争中都遭到破坏。2.WehopethatHaitiwhich washeavilydepredatedby the killerquakewillbereconstructedintheforseeablefuture.我们希望在大地震中受重创的海地在不久的将来可以重建。3.TwoIssuesonAddresseesDe…

java计算雷达扫描范围_雷达扫描 - linyinmobayu - 博客园

1、设计思想雷达扫描图&#xff0c;在影视作品中见到较多&#xff0c;比如飞机雷达、舰艇雷达&#xff0c;有一个扫描线转圈代表雷达一周旋转或一个批次的收发&#xff0c;发现目标就在表盘上标记位置。和汽车仪表盘类似&#xff0c;汽车仪表盘有底盘背景图、同圆、刻度、刻度值…

mysql降序后去重_Mysql 数据记录去重后按字段排序

实现效果&#xff1a;去重—取最新的—排序例子 : 按用户ID获取历史记录中某个人的记录&#xff0c;要求非重复的且每条只获取最新的&#xff0c;同时按添加时间倒序排列的实现 &#xff1a;SELECT *FROM (SELECT *FROM historysWHERE types_id1ORDER BY created DESC) AS BGRO…

linux php 守护进程,PHP程序员玩转Linux系列 使用supervisor实现守护进程

PHP程序员玩转Linux系列文章&#xff1a;首先遇到的问题是,部署nodejs的博客程序时,我把执行nodejs的命令放到后台,使用加&和nohup命令如:nodejs index.js & 或者 nohup nodejs index.js &&这个使用是当退出此次终端会话的时候就会停止, nohup这个命令理论上是…

计算机初级包括php吗,计算机的基本组成包括什么

计算机的基本组成包括控制器、运算器、存储器、输入设备和输出设备。其中&#xff0c;控制器是整个计算机的中枢神经&#xff0c;它的功能是对程序规定的控制信息进行解释&#xff0c;根据其要求进行控制&#xff0c;调度程序、数据&#xff0c;协调计算机各部分工作及内存与外…

php 获取今天数据,ThinkPHP 按日期获取今天获取本周获取本月获取今年数据

ThinkPHP 按日期或指定时间段获取今天、获取本周、获取本月、获取今年等数据。Db(gh_user)->whereTime(addTime, >, 2020-10-1)->select(); // 大于某个时间Db(gh_user)->whereTime(addTime, select(); // 小于某个时间Db(gh_user)->whereTime(addTime, between…

PHP复杂度,php 常用算法和时间复杂度

按数量级递增排列&#xff0c;常见的时间复杂度有&#xff1a;常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2)&#xff0c;立方阶O(n3)复制代码 代码如下://二分查找O(log2n)function erfen($a,$l,$h,$f){if($l >$h){ return false;}$m intval(($l…

ubuntu11.10 源码编译安装php5.3.8,Ubuntu 11.10编译安装Nginx、PHP 5.3.8、MySQL、MongoDB、Memcached、SSL、SMTP...

手动安装php mongo扩展sudo apt-get install autoconfwget http://pecl.php.net/get/mongo-1.2.6.tgztar -zxvf mongo-1.2.6.tgzcd mongo-1.2.6/usr/local/php/bin/phpize./configure --with-php-config/usr/local/php/bin/php-configmakesudo make installecho extension mon…

php中常用的全局变量有,在PHP中如何使用全局变量的方法详解

但是你可以使用你自己的全局变量。使用关键字“global”你就可以把全局数据导入到一个函数的局部范围内。如果你不明白“变量使用范围”&#xff0c;请你自己参考PHP手册上的相关说明。下面是一个使用“global”关键字的演示例子&#xff1a;代码如下:正如你在上面的例子中看到…

java实现图像处理高通滤波,图像处理入门——滤波 - leo_de_macondo的个人页面 - OSCHINA - 中文开源技术交流社区...

模糊图像模糊的方法可以将每个像素的rgb值用周围像素的加权平均值来代替。比如用周围的9个像素来计算加权平均值&#xff0c;权值可以用一个3x3的矩阵来表示&#xff1a;| 1 2 1 || 2 4 2 | * (1/16)| 1 2 1 |中间的像素是要处理的像素&#xff0c;越靠近中间权…

java激光图,java-OpenCV Android跟踪激光点

我正在尝试在Android设备上使用OpenCV跟踪激光点.我想使用此激光点在我的cameraview上的画布上绘制.我已经将我的camerapreview转换为HSV色彩空间,并使用阈值过滤(仅在H和V通道上)来分离我的Laserdot.这相当健壮.public Mat onCameraFrame(CvCameraViewFrame cvf) {// Grab the…

matlab数据接口技术,matlab接口技术与应用

matlab接口技术与应用来源&#xff1a;mamingkeda作者&#xff1a;华仔浏览&#xff1a;1070时间&#xff1a;2016-08-10 14:18标签&#xff1a;摘要&#xff1a;matlab接口技术与应用应用程序接口的使用方法。全书分为10章&#xff0c;第1章是matlab环境和编程语言的概述&…

php iframe 上传文件,php+iframe 实现上传文件功能示例

本文实例讲述了phpiframe 实现上传文件功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;我们通过动态的创建iframe&#xff0c;修改form的target&#xff0c;来实现无跳转的文件上传。具体的实现步骤1.捕捉表单提交事件2.创建一个iframe3.修改表单的target,指向ifr…

break是python合法标识符,Python笔记——break的注意事项

ajax状态ajax的几个状态 Uninitialized 初始化状态.XMLHttpRequest 对象已创建或已被 abort() 方法重置. Open open() 方法已调用,但是 send() 方法未调 ...使用Npoi向Excel中插入图片先把数据库中的数据都导入到Excel表格中,把图片地址的路径全部转成绝对路径. 使用Npoi读取刚…

bulk Java提交数据,性能优化 – bulk提交 - ELK Stack 中文指南

在 CRUD 章节&#xff0c;我们已经知道 ES 的数据写入是如何操作的了。喜欢自己动手的读者可能已经迫不及待的自己写了程序开始往 ES 里写数据做测试。这时候大家会发现&#xff1a;程序的运行速度非常一般&#xff0c;即使 ES 服务运行在本机&#xff0c;一秒钟大概也就能写入…

catalog java,Java Connection getCatalog()方法与示例

通常&#xff0c;目录是一个目录&#xff0c;其中包含有关数据集&#xff0c;文件或数据库的信息。而数据库目录中包含所有数据库&#xff0c;基本表&#xff0c;视图(虚拟表)&#xff0c;同义词&#xff0c;值范围&#xff0c;索引&#xff0c;用户和用户组的列表。Connection…

matlab 函数 命名参数,如何处理MATLAB中的函数参数的名称/值对

我喜欢使用结构为我的选择。这给你一个简单的方法来存储选项和一个简单的方法来定义它们。此外&#xff0c;整个事情变得相当紧凑。function example(varargin)%# define defaults at the beginning of the code so that you do not need to%# scroll way down in case you wan…

ssrf 过滤.php,SSRF技巧之如何绕过filter_var( )

0x00 前言前几天我读了两篇非常棒的论文&#xff1a;第一篇是发表在blackhat.com上的“A New Era of SSRF ”&#xff0c;讲述的是不同编程语言的SSRF问题&#xff1b;第二篇是由Positive Technology发表的一篇名为“PHP Wrapper” 的论文&#xff0c;它主要讲述的是如何以多种…