草庐IT

haskell-mpi

全部标签

java - 使用 Haskell 将函数注入(inject) Java .class 文件

我使用Haskell编写了一个Java字节码解析器,它工作得很好。然而,下一步让我完全难住了。我的Haskell程序需要修改.class文件,以便Java程序在执行时打印:“在执行方法之前输入[方法名称]”,并且“在执行方法后退出[此处的方法名称]”。我所知道的是我们需要通过调用System.out.println来附加常量池和方法表,但我觉得我仍然遗漏了一些东西。解决这个问题的最佳方法是什么?你怎么知道如何在字节码中调用System.out.println?如何存储带有方法名称的字符串,以便稍后作为System.out.println的参数调用? 最佳答案

java - Haskell 数据类型到 Java(OO)

我正在尝试将一个简单的Haskell数据类型和一个函数转换为OO。但是我很困惑..具有以下用于算术计算的Haskell类型:dataExpr=LitInt|AddExprExpr|derivingShow--TurntheexprtoanicestringshowExpr::Expr->StringshowExpr(Litn)=shownshowExpr(Adde1e2)="("++showExpre1++"+"++showExpre2++")"现在我正在尝试转换..publicinterfaceExpr{StringshowExpr(Stringn);}//Basecasepubli

java - Java 8 中 Haskell 的 foldr 等价物

这个问题在这里已经有了答案:HowtoreducegivenlistbyusingLambdaexpression.reduce()method(2个答案)关闭7年前。我们习惯了foldr在Haskell中你使用(例如,使用Java语法)aList并返回所需的任何类型(、List等)。例如在Haskell中,这个函数接受List并返回另一个List并用作累加器aList(只是一个例子,函数的目标无关紧要):evens::[Integer]->[Integer]evens=foldr(\xacc->ifmodx2==0thenx:accelseacc)[]现在Java8已经推出并具有函数

java - 如何在 Haskell 中使用指向父子项的指针编写对象树?

我遇到了以下问题:我有一个不同类的对象树,其中子类中的操作使父类无效。在命令式语言中,这是微不足道的。例如,在Java中:publicclassA{privateListm_children=newLinkedList();privatebooleanm_valid=true;publicvoidinvalidate(){m_valid=false;}publicvoidaddChild(Bchild){m_children.add(child);child.m_parent=this;}}publicclassB{publicAm_parent=null;privateintm_da

java - 如何在 Haskell 中实现提前退出/返回?

我正在将Java应用程序移植到Haskell。Java应用程序的主要方法遵循以下模式:publicstaticvoidmain(String[]args){if(args.length==0){System.out.println("Invalidnumberofarguments.");System.exit(1);}SomeDataTyped=getData(arg[0]);if(!dataOk(d)){System.out.println("Couldnotreadinputdata.");System.exit(1);}SomeDataTyper=processData(d);

java - 我需要了解 Haskell 如何表示数据才能编写好的 Haskell 程序吗?

我是从Java背景开始学习Haskell的。当我编写Java程序时,我觉得我对对象在内存中的布局方式及其后果有着深刻的理解。例如,我确切地知道java.lang.String和java.util.LinkedList是如何工作的,因此我知道我应该如何使用它们。对于Haskell,我有点迷路了。例如,(:)是如何工作的?我应该关心吗?是否在某处指定? 最佳答案 简短的回答是否定的。在Haskell中编程时,您应该将数据结构视为纯数学对象,而不用担心它们在内存中的表示方式。这样做的原因是,在没有副作用的情况下,除了创建数据的函数和可用于

java - Java 的 MPI 实现

是否有当前的JavaMPI实现。我用MPI编程了一点,我喜欢用Java编程。我看过this在Java中实现,但它似乎过时了。是否有更新的Java实现正在保持更新? 最佳答案 看看MPJ你可以阅读这个section在维基百科中。 关于java-Java的MPI实现,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/469932/

java - 这个 Haskell 函数的 Java 等价物是什么?

PhilipWadler的论文“Monadsforfunctionalprogramming”有一个函数eval的例子,它执行用Haskell编写的除法。这是改编自GrahamHutton的“ProgramminginHaskell”:dataExpr=ValInt|DivExprExpreval::Expr->Inteval(Valn)=neval(Divxy)=evalx`div`evaly我的Java等价物是:abstractclassIntegerExpression{abstractIntegerevaluate();}classValueextendsIntegerExpr

java - Java 中的 Haskell 风格内存

我知道这是异端邪说,但我试着翻译了来自http://www.haskell.org/haskellwiki/Memoization的例子到java。到目前为止,我有:publicabstractclassF{publicabstractBf(Aa);}...publicstaticFmemoize(finalFfn){returnnewF(){privatefinalMapmap=newHashMap();publicBf(Aa){Bb=map.get(a);if(b==null){b=fn.f(a);map.put(a,b);}returnb;}};}//usage:privatec

c++ - 在 Haskell 中移动或复制(相对于 C++)

以这两个C++函数和示例用法为例:vectormakeVect(){vectorv={1,2,3};returnv;}//usageautov=makeVect();//vectorismovedvoidaddFour(vector&v){v.push(4);}//usageaddFour(v);//vispassedinasreference两种情况下都不会发生复制。这真的很有效。对应的Haskell函数和用法如下:makeVect::(Numa)=>[a]makeVect=[1,2,3]--usage--Q1:is[1,2,3]copiedormovedtov?letv=makeV