Functional programming 如何避免使用可变数据结构,并使用更具功能性的方法?

Functional programming 如何避免使用可变数据结构,并使用更具功能性的方法?,functional-programming,scheme,Functional Programming,Scheme,我在scheme中使用wiredtiger键/值存储构建数据库 要查询给定的表,需要在表上有一个光标。库建议重新使用光标。一般行为可由以下伪代码描述: with db.cursor() as cursor: cursor.get(key) ... do_something(db) ... 在使用语句的范围内,光标只能在当前上下文中使用。如果do\u something(db)需要一个游标,它必须创建/检索另一个游标,即使它要查询同一个表。否则,光标将失去其位置,d

我在scheme中使用wiredtiger键/值存储构建数据库

要查询给定的表,需要在表上有一个
光标。库建议重新使用
光标
。一般行为可由以下伪代码描述:

with db.cursor() as cursor:

   cursor.get(key)

   ...

   do_something(db)
   ...
在使用
语句的
范围内,光标
只能在当前上下文中使用。如果
do\u something(db)
需要一个游标,它必须创建/检索另一个游标,即使它要查询同一个表。否则,
光标
将失去其位置,
do_something(db)
的继续操作将不符合预期

您可以通过始终重置光标来解决此问题,这是一种浪费。相反,最好保留一组游标以备使用,当可以通过
db.cursor()
请求时,这将从可用游标中删除游标并返回它。“上下文”操作完成后,将其放回原处

我在Python中解决这个问题的方法是使用
列表
db.cursor()
看起来像:

def cursor(self):
    cursor = self.cursors.pop()
    yield cursor
    self.cursors.append(cursor)
这意味着,检索游标,将其发送到当前上下文,一旦上下文完成,将其放回可用游标列表


我怎样才能避免变异并使用更实用的方法呢?

也许你需要参数

查找方案实现使用的确切构造

一些实现使用:

http://srfi.schemers.org/srfi-39/srfi-39.html

你能更精确一点吗?这里对参数有很好的描述:最后几节将参数与突变进行比较。