我已經被賦予創建一個所謂的「便利構造函數」的任務,它應該可以用來構造下面給出的分支的一個實例。對此的約束是構造函數應該是懶惰的,不應該要求任何明確的延遲。 完整的任務是在以下位描述:Scala:便利構造函數,一個懶惰的構造函數,不需要任何延遲
object Q5 {
/**
* Task 5.
*
* Consider a type of lazy binary trees:
*/
trait Tree[+A]
case class Branch[+A] (l:() => Tree[A], r:() => Tree[A]) extends Tree[A]
case object Leaf extends Tree[Nothing]
/**
* Implement a convenience constructor 'branch' that is both lazy
* but does not require using explicit delays like Branch.
*/
def branch[A] (l : =>Tree[A], r: =>Tree[A]) :Tree[A] = //TODO: Solve this
}
我的假設是,我應該以某種方式改變L和R爲無參數的功能 - 但我不能完全肯定,如果這是正確的,也沒有任何的我的嘗試成功了。最後,我不確定什麼是由「顯式延遲」推斷的,但我認爲這意味着評估是在每個級別完成的,而不是在找到最深的節點(並行化目的)之後完成的。
如果任何人有任何澄清或可能的解決辦法來如何做一個懶惰的,而不是明確推遲'便利構造',它將不勝感激!
顯式延遲可能是指'lazy'關鍵字的用法。 – arboreal84
這個問題自相矛盾,但「並不要求像Branch一樣使用明確的延遲」。參數*中「=> X」的使用是明顯的延遲。 – pedrofurla
你真的應該問誰給你任務什麼_they_意思是「明顯的延遲」,這不是一個廣泛使用的術語,有一個固定的定義。 –