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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JVM是否會阻止尾調用優(yōu)化?

JVM是否會阻止尾調用優(yōu)化?

JVM
繁星點點滴滴 2019-07-30 16:25:53
JVM是否會阻止尾調用優(yōu)化?我在這個問題上看到了這個引用:什么是構建Web服務的好函數(shù)語言?特別是Scala不支持尾調用消除,除了自遞歸函數(shù),這限制了你可以做的組合種類(這是JVM的一個基本限制)。這是真的?如果是這樣,那么創(chuàng)建這個基本限制的JVM是什么呢?
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

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

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

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

我相信這可以做到,但這不是一項小任務。

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


查看完整回答
反對 回復 2019-07-30
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

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

因此,在Sun實現(xiàn)JVM本身的尾調用之前,JVM不能支持任何生產質量的函數(shù)式編程語言。他們多年來一直在討論它,但我懷疑它們是否會實現(xiàn)尾調用:它將非常困難,因為它們在實現(xiàn)這些基本功能之前過早地優(yōu)化了它們,而Sun的工作主要集中在動態(tài)語言而不是函數(shù)語言上。

因此,有一個非常強烈的論點,即Scala不是一種真正的函數(shù)式編程語言:自從30多年前首次引入Scheme以來,這些語言一直認為尾調用是一個必不可少的特性。


查看完整回答
反對 回復 2019-07-30
?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

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

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

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


查看完整回答
反對 回復 2019-07-30
  • 3 回答
  • 0 關注
  • 667 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號