gpt4 book ai didi

java - 将整数列表从 java 传递到 frege 函数的最简单方法是什么?

转载 作者:行者123 更新时间:2023-11-30 03:38:08 25 4
gpt4 key购买 nike

假设我有一个弗雷格模块

module Util where

total :: [Int] -> Int
total xs = fold (+) 0 xs

如果“total”是用Java编写的,我可以通过以下方式调用它

Util.total(Arrays.asList(1,2,3));

从 Java 调用 Frege 实现的最佳方式是什么?

最佳答案

你可以使用一个好的旧int []数组,相应的frege类型将是JArray Int。因为 Java 和 frege 中都可以从列表中创建数组,也可以将数组创建为列表,因此它们非常适合此类任务。

请使用 repl 了解如何将数组转换为列表,以便将其传递给函数。

如果有疑问 rgd。堆空间中,Data.Iterators 中还有一个所谓的 ArrayIterator,即 ListView 类型类的实例。因此,另一种选择是编写您的 frege 以便获取 ListView

total xs = fold (+) 0 xs.toList

在java中调用相当于

ArrayIterator.from (... code to create array here ...)

如果您无法更改 frege 代码,或者不想更改,您可以使用以下命令创建一个惰性列表

(ArrayIterator.from (... code to create array here ...)).toList

最后但并非最不重要的一点是,您可以折叠数组,而无需先使用 foldArray 进行转换。

关于java - 将整数列表从 java 传递到 frege 函数的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27349444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com