0
我嘗試將此代碼轉換爲CPS形式:延續傳遞風格和元素
def sum (lst : List [ Int ]) : Int = lst match {
case Nil => 0
case first :: rest => first + sum (rest)
}
def sumC1(lst : List [ Int ], k : Int => Unit) : Unit = lst match {
case lst => k(sum(lst))
}
我是個新階,並得到非常大的問題undertand的語法。如果你能給我一些語法來解決這個任務
這是我的一個典型值不匹配的代碼,將是非常有益的:
def sum(lst: List[Int])(cont: Int => Int): Int = lst match {
case Nil => cont(0)
case first :: rest => sum(lst){rest => cont(first + rest) }
}
def sumC1(lst: List[Int], k: Int => Unit): Unit = lst match {
case lst => k(sum(lst))
}
sumC1(List(1, 2, 3), (v: Int) => println(v))
這個答案失敗了練習的目的,你應該在整個計算過程中繼續這個延續。 – Lee
第一個代碼段正在執行繼續傳遞 – Mikel
您的第一個代碼段無法編譯,因爲「cont」沒有在任何地方定義。如果是,它將會輸入'Int => Unit',所以'cont + i'不會輸入檢查。你只是直接計算總和,然後傳遞給繼續,而不是通過總和過程使用它。 – Lee