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