Scala-ARM (Automatic-Resource-Management) sử dụng phân
import java.io._
import util.continuations._
import resource._
def each_line_from(r : BufferedReader) : String @suspendable =
shift { k =>
var line = r.readLine
while(line != null) {
k(line)
line = r.readLine
}
}
reset {
val server = managed(new ServerSocket(8007)) !
while(true) {
// This reset is not needed, however the below denotes a "flow" of execution that can be deferred.
// One can envision an asynchronous execuction model that would support the exact same semantics as below.
reset {
val connection = managed(server.accept) !
val output = managed(connection.getOutputStream) !
val input = managed(connection.getInputStream) !
val writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(output)))
val reader = new BufferedReader(new InputStreamReader(input))
writer.println(each_line_from(reader))
writer.flush()
}
}
}
một nit: CPS (tiếp-qua phong cách) là cái gì đó là có thể trong bất kỳ ngôn ngữ mà có hoặc có thể mô phỏng các hàm bậc cao hơn. Ví dụ, khi bạn chuyển một đối tượng gọi lại đến một phương thức trong Java, đó thực sự là một ví dụ về CPS. Scala * liên tục giới hạn * plugin cung cấp một cách để viết các cấu trúc điều khiển mà trông giống như cú pháp "phong cách trực tiếp" nhưng được chuyển thành CPS đằng sau hậu trường. –