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

标签 java programming-languages haskell biginteger

Hugs> 94535^445
1376320882321377050696053887661515621104890164005282153069726424773999801846841903244827702943487982707454966009456016735041878000604143500908532887464920380605164932112687039059526672109818924234920844448231612532570718657160234177285377733830104834041049076609912488237219608445995072867798430614935403219495883835042862802917980856774134757390782052200512932375660858045003581611863121089979673784484701791210379500218604466721285456487387736825167702127154268533859979529612671925052419513844416493584817268143587955662039327860394141299238613042312035808541735213479394437496215520277526351425482512084759462579494878772787079101513841720202004639843443083454387175700954018825292148776647553122504118229978165851660083576570848983047255050145168802863168613110619584686348869690774233051669081248424584219383477237544209892290799448207462345346336076966775224683516220960618177284844330167142846351091001423033864986042919757795382577032341453971393897073354841924116635150129850119992031076354249371062307034564093077675129303383786693131843907104175619570678630497198824622804914508555467550904967368926176118094672479099827962889569753303773699017596074205893197641101210911874606040804983166177455705972192827752532495287749766682029353154226049380290040508900715169403153139668217790502306177709467234413947747673881158973344492079455405942662489751581189327200960698310350121179918845099840977270519116578719881752429190273998774113278822810866144521416958558406602325070095207349450759264393913367193083149679216066539911941983836313340998945139132421885688290888674594474605510238217590823316979504437667252929278291853368754482552573193289277120902144178425726693671235675042499401282016643202758246845332593475338220708351934511933096882598943512036679145593929114103343255708217768511665236173107020739195152050863630870948954052925049746246549772984384435109578859863612603574306739909728739428192798727373799081111333186135697868385292787575475482883660605162944306327057220313320376280182432763977906971557137715710757099478269250731209785404487629107297262798803645379809868663503452656912571816192881412782623078761411808958183665272686617730596943579533808499348879195167683064937591552734375

为什么 Haskell 可以计算出这么大的数字,而其他语言,例如 Java,却不能(那么容易)?

最佳答案

这是设计理念的不同:

  • Haskell 的设计者希望确保用户不会对需要超过 32 位的整数计算的看似随意的失败感到惊讶。

  • Java 的设计者希望确保用户不会因为对需要超过 32 位的整数进行大量计算而导致看似任意的性能下降感到惊讶。

在每种语言中,您都必须做一些特殊的事情才能得到另一种整数。

默认情况下支持任意大整数的语言有着悠久而光荣的历史。我最喜欢的两个是IconSmalltalk ,他们都超过 25 岁。

关于java - 为什么 Haskell 可以轻松处理非常大的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184296/

相关文章:

java - 文档声明单独的空命名空间呈现 NamespaceAware 结果无用

perl - 有哪些好的 Perl 调试方法?

c - 为什么 int 类型的变量在许多语言中默认是有符号的?

Haskell:在不使用 spawn 的情况下拆分管道(广播)

java - 如何在新类中使用类的方法?

java - 如何按对象特定变量的字母顺序将对象添加到数组列表

java - SDN : How to map a collection of nodes to a @NodeEntity class member?

function - 为什么没有类似于atan2()的asin2()和acos2()函数?

使用 Attoparsec 解析简单的分子名称

haskell - 将 `Functor` 类泛化为 `MultiFunctor`?