【发布时间】:2013-01-08 03:14:51
【问题描述】:
我正在创建一个系统,该系统需要存储用户在数据库中运行的所有函数和参数。没有记录被删除,但我需要能够重新创建最小的函数序列和参数集以进行确定性重新生成。
用户交互非常少,他们不是编程 - 输入交互在 C++ 中处理,通过 FFI 作为数据累积到列表中,并回调以处理当前数据缓冲区。该函数触发一系列关于如何连接数据库中数据集的处理图以及它们被输入到的函数的决策。该图是非循环的。该图最初是运行的,并且值是为用户可视化的。图表的后面部分将被重新组合以生成新的图表。
这些图的 Haskell 内部结构是通过分析数据库中的数据和组合中的简单随机选择创建的。我希望能够只存储随机生成器的种子、它适用的模块和参数 id。
我认为这可能最好将 EDSL 的功能存储在数据库中,其中仅存储高级交互但完全确定性。
我对存储值不感兴趣,而是对动作的函数图感兴趣。
每张表对应不同的功能。每条记录都有一个日期和一个任务 ID,以将特定操作的所有功能组合在一起。参数引用表 ID 和记录 ID。如果组合函数在内部执行诸如生成随机数之类的操作,则应自动存储该数字的种子。
我正在使用没有 GHCI 和 Persistent SQlite 的 GHC 阶段 1。
我还是 Haskell 的新手,正在寻找适合以功能方式解决此问题的方法和软件包。
【问题讨论】:
-
“函数图”是什么意思? GHC Haskell 将运行时系统中的函数表示为图形(运行时是所谓的图形缩减机器),但用户无法访问内部。在数据库中存储函数会非常复杂——通常这是“持久”语言的领域,例如 Napier 88 或 Tycoon-2。已经在 Napier 88 的持久化存储(Persistent Haskell)上实现了 Haskell,但这是一个早已完成的研究项目。
-
抱歉,有点不清楚。我仍然对 Haskell 感到不安。我将用我认为可能是我需要的策略来重新表述这个问题。我现在正在输入。
-
用户与什么样的 API 交互?
标签: haskell functional-programming