簡體   English   中英

將整數列表從Java傳遞到frege函數的最簡單方法是什么?

[英]what is the easiest way to pass a list of integers from java to a frege function?

假設我有一個Frege模塊

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 ...)

而且,如果您無法更改或不願更改代碼,則可以使用

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

最后但並非最不重要的一點是,您可以在不使用foldArray進行轉換的情況下折疊數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM