第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

JVM是否會(huì)阻止尾調(diào)用優(yōu)化?

JVM是否會(huì)阻止尾調(diào)用優(yōu)化?

JVM是否會(huì)阻止尾調(diào)用優(yōu)化?我在這個(gè)問(wèn)題上看到了這個(gè)引用:什么是構(gòu)建Web服務(wù)的好函數(shù)語(yǔ)言?特別是Scala不支持尾調(diào)用消除,除了自遞歸函數(shù),這限制了你可以做的組合種類(lèi)(這是JVM的一個(gè)基本限制)。這是真的?如果是這樣,那么創(chuàng)建這個(gè)基本限制的JVM是什么呢?
查看完整描述

3 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

這篇文章:遞歸或迭代?可能有幫助。

簡(jiǎn)而言之,由于安全模型以及始終需要堆棧跟蹤的需要,在JVM中很難進(jìn)行尾調(diào)用優(yōu)化。理論上可以支持這些要求,但可能需要一個(gè)新的字節(jié)碼(參見(jiàn)John Rose的非正式提案)。

Sun bug#4726340中也有更多的討論,評(píng)估(從2002年)結(jié)束:

我相信這可以做到,但這不是一項(xiàng)小任務(wù)。

目前,Da Vinci Machine項(xiàng)目正在進(jìn)行一些工作。尾調(diào)用子項(xiàng)目的狀態(tài)列為“proto 80%”; 它不太可能進(jìn)入Java 7,但我認(rèn)為它在Java 8上有很好的機(jī)會(huì)。


查看完整回答
反對(duì) 回復(fù) 2019-07-30
?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

基本限制只是JVM不在其字節(jié)代碼中提供尾調(diào)用,因此,構(gòu)建在JVM上的語(yǔ)言本身沒(méi)有直接提供尾調(diào)用的方法。有一些解決方法可以達(dá)到類(lèi)似的效果(例如蹦床),但它們會(huì)帶來(lái)糟糕的性能和混淆生成的中間代碼,這使得調(diào)試器無(wú)用。

因此,在Sun實(shí)現(xiàn)JVM本身的尾調(diào)用之前,JVM不能支持任何生產(chǎn)質(zhì)量的函數(shù)式編程語(yǔ)言。他們多年來(lái)一直在討論它,但我懷疑它們是否會(huì)實(shí)現(xiàn)尾調(diào)用:它將非常困難,因?yàn)樗鼈冊(cè)趯?shí)現(xiàn)這些基本功能之前過(guò)早地優(yōu)化了它們,而Sun的工作主要集中在動(dòng)態(tài)語(yǔ)言而不是函數(shù)語(yǔ)言上。

因此,有一個(gè)非常強(qiáng)烈的論點(diǎn),即Scala不是一種真正的函數(shù)式編程語(yǔ)言:自從30多年前首次引入Scheme以來(lái),這些語(yǔ)言一直認(rèn)為尾調(diào)用是一個(gè)必不可少的特性。


查看完整回答
反對(duì) 回復(fù) 2019-07-30
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

Scala 2.7.x支持對(duì)最終方法和本地函數(shù)的自遞歸(一個(gè)函數(shù)調(diào)用自身)進(jìn)行尾調(diào)用優(yōu)化。

Scala 2.8也可能帶有對(duì)trampoline的庫(kù)支持,這是一種優(yōu)化相互遞歸函數(shù)的技術(shù)。

有關(guān)Scala遞歸狀態(tài)的大量信息可以在Rich Dougherty的博客中找到。


查看完整回答
反對(duì) 回復(fù) 2019-07-30
  • 3 回答
  • 0 關(guān)注
  • 678 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)