草庐IT

haskell-lens

全部标签

java - 为什么 Haskell 中的阶乘计算比 Java 中的快得多

我遇到的一个编程问题涉及计算大数(最多10^5的数)的阶乘。我见过一个简单的Haskell代码,它是这样的factorial::(Eqx,Numx)=>x->xfactorial0=1factoriala=a*factorial(a-1)它隐式地处理大量数字,并且即使在代码中不涉及任何缓存的情况下也能以某种方式运行得更快。当我尝试使用Java解决问题时,我不得不使用BigInteger来保存巨大的数字并使用迭代版本的阶乘publicstaticBigIntegerfactorialIterative(intn){if(n==0||n==1)returnBigInteger.valueO

java - 为什么 Haskell 中的阶乘计算比 Java 中的快得多

我遇到的一个编程问题涉及计算大数(最多10^5的数)的阶乘。我见过一个简单的Haskell代码,它是这样的factorial::(Eqx,Numx)=>x->xfactorial0=1factoriala=a*factorial(a-1)它隐式地处理大量数字,并且即使在代码中不涉及任何缓存的情况下也能以某种方式运行得更快。当我尝试使用Java解决问题时,我不得不使用BigInteger来保存巨大的数字并使用迭代版本的阶乘publicstaticBigIntegerfactorialIterative(intn){if(n==0||n==1)returnBigInteger.valueO

java - 为什么 Haskell 可以轻松处理非常大的数字?

Hugs>94535^445137632088232137705069605388766151562110489016400528215306972642477399980184684190324482770294348798270745496600945601673504187800060414350090853288746492038060516493211268703905952667210981892423492084444823161253257071865716023417728537773383010483404104907660991248823721960844599

java - 为什么 Haskell 可以轻松处理非常大的数字?

Hugs>94535^445137632088232137705069605388766151562110489016400528215306972642477399980184684190324482770294348798270745496600945601673504187800060414350090853288746492038060516493211268703905952667210981892423492084444823161253257071865716023417728537773383010483404104907660991248823721960844599

java - 如何在 Java 中模拟 Haskell 的 "Either a b"

如何编写一个类型安全的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 - 如何在 Java 中模拟 Haskell 的 "Either a b"

如何编写一个类型安全的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 - Haskell 中的 undefined 和 Java 中的 null 有什么区别?

两者都是类型是所有类型(无人居住)的交集的术语。两者都可以在代码中传递而不会失败,直到尝试评估它们。我能看到的唯一区别是,在Java中,有一个漏洞允许null仅针对一个操作进行评估,即引用相等比较(==)--而在Haskellundefined中,根本无法在不引发异常的情况下进行评估。这是唯一的区别吗?编辑我真正想解决的问题是,为什么在Java中包含null是一个如此糟糕的决定,以及Haskell如何逃避它?在我看来,真正的问题是你可以用null做一些有用的事情,即你可以检查它的nullness。因为您可以这样做,所以在代码中传递空值并让它们指示“无结果”而不是“此程序中存在逻辑错误”

java - Haskell 中的 undefined 和 Java 中的 null 有什么区别?

两者都是类型是所有类型(无人居住)的交集的术语。两者都可以在代码中传递而不会失败,直到尝试评估它们。我能看到的唯一区别是,在Java中,有一个漏洞允许null仅针对一个操作进行评估,即引用相等比较(==)--而在Haskellundefined中,根本无法在不引发异常的情况下进行评估。这是唯一的区别吗?编辑我真正想解决的问题是,为什么在Java中包含null是一个如此糟糕的决定,以及Haskell如何逃避它?在我看来,真正的问题是你可以用null做一些有用的事情,即你可以检查它的nullness。因为您可以这样做,所以在代码中传递空值并让它们指示“无结果”而不是“此程序中存在逻辑错误”

xml - 如何使用 Haskell 的 xml 管道解析 GPX 文件?

我想使用xml-conduit来解析GPX文件。到目前为止,我有以下内容:{-#LANGUAGEOverloadedStrings#-}importControl.ApplicativeimportData.TextasTimportText.XMLimportText.XML.CursordataTrkpt=Trkpt{trkptLat::Text,trkptLon::Text,trkptEle::Text,trkptTime::Text}deriving(Show)trkptsFromFilepath=gpxTrkpts.fromDocumentText.XML.readFiled

c++ - 在 Haskell 项目中包含 C++ 源代码

我正在尝试制作一个将在Haskell中公开但在C++中实现的数据结构。到目前为止,我已经在.cpp文件中实现了它,将我需要的所有函数声明为extern"C"并将源文件添加到c-.cabal文件中的sources字段。当我构建项目时(在本例中使用stackbuild),它似乎构建得很好。我知道它正在对C++文件做某事,因为如果有错误它就不会编译。我还没有尝试运行这个项目,因为它是一个库,到目前为止它还没有写任何“可运行”的东西,但repl似乎不起作用。当我尝试运行它时(在本例中为stackrepl),我收到一个丢失的符号错误,其中包含一些损坏的名称,这些名称可能是也可能不是我文件中的名称