[英]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.