Hasty Briefsbeta

双语

Emulating Goto in Scheme with Continuations

7 days ago
  • #call/cc
  • #Scheme
  • #GOTO
  • Dijkstra批评GOTO语句过于原始且容易导致代码混乱。
  • Scheme语言虽没有GOTO语句,但可通过call/cc(call-with-current-continuation)模拟其行为。
  • GOTO允许跳转到代码不同部分,常用于循环和资源清理场景。
  • call/cc能捕获当前续体(continuation),从而实现对控制流的灵活操控。
  • Scheme中通过宏'with-goto'利用call/cc实现了GOTO的模拟功能。
  • 在'with-goto'中,标签被定义为无参数过程(thunks)。
  • 续体机制支持直接跳转至标签,无需返回到原始调用点。
  • 该实现效率较低且不实用,但充分展示了call/cc的强大能力。
  • 文中建议使用delimited continuations(受限续体)作为call/cc的更优替代方案。