草庐IT

haskellers

全部标签

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 - 这个 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

c++ - 使用 O(1) 元素访问在 Haskell 中实现高效的类似 zipper 的数据结构

问题我想创建一个数据类型,允许快速访问和修改其元素。是否可以在Haskell中创建一个结构和函数,其执行速度与简单的C++实现一样快?问题详情我正在用Haskell编写一个编译器。我有AST由数据类型表示,让我们考虑以下一个:importPreludehiding(id)--thisisasampledatatype,therealonehasgotalotofconstructorsdataAST=A{id::Int,x::AST,y::AST,z::AST}|B{id::Int}|C{id::Int,x::AST,y::AST}|D{id::Int,u::AST,v::AST,w:

c++ - Haskell 堆栈设置 - 无法识别 CPP 程序

我正在学习UdemyHaskell类(class),该类(class)曾显示我可以使用Stack选项下载Haskell。我已经配置了我的$PATH并在遇到问题时运行堆栈设置。configure:WARNING:configurecan'trecognizeyourCPPprogram,youmayneedtoset--with-hs-cpp-flags=FLAGSexplicitlyconfigure:error:in`/Users/Dylan/.stack/programs/x86_64-osx/ghc-8.0.2.temp/ghc-8.0.2':configure:error:Cc

c++ - C++ "type deduction"和 Haskell "type inference"有什么区别?

在英语语义中,“typededuction”等于“typeinferring”吗?我不确定这只是不同语言设计者选择的成语偏好,或者计算机科学给出了严格的“类型推导”定义,哪个不是“类型推断”?谢谢。 最佳答案 C++规范和工作草案广泛使用“类型推导”来指代没有类型声明作为引用的表达式类型;例如thisworkingdraftonconcepts在谈论auto声明的变量时使用它,我记得很多书在谈论模板时都使用它,那时候我不得不学习——然后忘记了大部分——C++。Typeinference但是,它有自己的维基百科页面,也是编程语言理论中

c++ - "True Polymorphism"的例子? (最好使用 Haskell)

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我见过很多“真正的多态性”的部分定义,例如here和here但我在任何地方都找不到两个具体示例的区别的明显示例。我知道重载+运算符是某种形式的多态性,它在Haskell和C++中的实现方式不同。有人可以准确地说明两种语言的例子有什么不同吗?

c++ - Haskell FFI内存分配性能问题

我正在使用FFItoC将中等数量的数据(~100MB)发送到C程序——只是一个字符串列表。但是,我使用的所有方法似乎都花费了不合理的时间(~10秒)。分析后,似乎是实际的内存分配需要时间。我试过:作为常规字符串发送(newCString)转换为ByteStrings(unsafeUseAsCString)转换为字符vector(unsafeWith>>=withForeignPtr...)通过CFFI发送数据的最快方法是什么? 最佳答案 正如ReidBarton在评论中所说,如果您有100MB的字符串,无论您如何处理它,您的分配一开