我正在寻找一种从Java程序中执行Haskell函数的有效方法。我考虑过使用exec()与GHC交互,但似乎应该有更好的方法。 最佳答案 我通常避免使用JNI类型的方法来跨运行时/语言进行链接。他们只是有太多的陷阱和很少的好处。我发现跨流程边界工作更容易。虽然我从未尝试过使用Haskell和Java,但它们都有支持XMLRPC的库,这听起来很适合您正在做的事情。所以:将Haskell程序设置为“服务”,并在需要时调用它的函数。 关于java-从Java中调用Haskell函数的最佳方式,
我正在寻找一种从Java程序中执行Haskell函数的有效方法。我考虑过使用exec()与GHC交互,但似乎应该有更好的方法。 最佳答案 我通常避免使用JNI类型的方法来跨运行时/语言进行链接。他们只是有太多的陷阱和很少的好处。我发现跨流程边界工作更容易。虽然我从未尝试过使用Haskell和Java,但它们都有支持XMLRPC的库,这听起来很适合您正在做的事情。所以:将Haskell程序设置为“服务”,并在需要时调用它的函数。 关于java-从Java中调用Haskell函数的最佳方式,
我遇到的一个编程问题涉及计算大数(最多10^5的数)的阶乘。我见过一个简单的Haskell代码,它是这样的factorial::(Eqx,Numx)=>x->xfactorial0=1factoriala=a*factorial(a-1)它隐式地处理大量数字,并且即使在代码中不涉及任何缓存的情况下也能以某种方式运行得更快。当我尝试使用Java解决问题时,我不得不使用BigInteger来保存巨大的数字并使用迭代版本的阶乘publicstaticBigIntegerfactorialIterative(intn){if(n==0||n==1)returnBigInteger.valueO
我遇到的一个编程问题涉及计算大数(最多10^5的数)的阶乘。我见过一个简单的Haskell代码,它是这样的factorial::(Eqx,Numx)=>x->xfactorial0=1factoriala=a*factorial(a-1)它隐式地处理大量数字,并且即使在代码中不涉及任何缓存的情况下也能以某种方式运行得更快。当我尝试使用Java解决问题时,我不得不使用BigInteger来保存巨大的数字并使用迭代版本的阶乘publicstaticBigIntegerfactorialIterative(intn){if(n==0||n==1)returnBigInteger.valueO
Hugs>94535^445137632088232137705069605388766151562110489016400528215306972642477399980184684190324482770294348798270745496600945601673504187800060414350090853288746492038060516493211268703905952667210981892423492084444823161253257071865716023417728537773383010483404104907660991248823721960844599
Hugs>94535^445137632088232137705069605388766151562110489016400528215306972642477399980184684190324482770294348798270745496600945601673504187800060414350090853288746492038060516493211268703905952667210981892423492084444823161253257071865716023417728537773383010483404104907660991248823721960844599
假设我有以下类(class):publicclassFixExpr{Exprin;}现在我想介绍一个通用参数,对Expr的使用进行抽象:publicclassFix{F>in;}但Eclipse不喜欢这样:ThetypeFisnotgeneric;itcannotbeparametrizedwitharguments>这是否可能,或者我是否忽略了导致此特定实例中断的某些内容?一些背景信息:在Haskell中,这是编写泛型函数的常用方法;我正在尝试将其移植到Java。上例中的类型参数F具有种类*->*而不是通常的种类*。在Haskell中它看起来像这样:newtypeFixf=In{ou
假设我有以下类(class):publicclassFixExpr{Exprin;}现在我想介绍一个通用参数,对Expr的使用进行抽象:publicclassFix{F>in;}但Eclipse不喜欢这样:ThetypeFisnotgeneric;itcannotbeparametrizedwitharguments>这是否可能,或者我是否忽略了导致此特定实例中断的某些内容?一些背景信息:在Haskell中,这是编写泛型函数的常用方法;我正在尝试将其移植到Java。上例中的类型参数F具有种类*->*而不是通常的种类*。在Haskell中它看起来像这样:newtypeFixf=In{ou
如何编写一个类型安全的Java方法来返回a类或b类的东西?例如:public...either(booleanb){if(b){returnnewInteger(1);}else{returnnewString("hi");}}最干净的方法是什么?(我唯一想到的是使用异常,这显然很糟糕,因为它滥用了通用语言功能的错误处理机制......publicStringeither(booleanb)throwsIntException{if(b){returnnewString("test");}else{thrownewIntException(newInteger(1));}})
如何编写一个类型安全的Java方法来返回a类或b类的东西?例如:public...either(booleanb){if(b){returnnewInteger(1);}else{returnnewString("hi");}}最干净的方法是什么?(我唯一想到的是使用异常,这显然很糟糕,因为它滥用了通用语言功能的错误处理机制......publicStringeither(booleanb)throwsIntException{if(b){returnnewString("test");}else{thrownewIntException(newInteger(1));}})