我是函数式编程和 Clojure 的新手,所以我不太确定在大学里为项目做什么。该项目应展示 Clojure STM 在银行交易中的优势(将资金从账户 A 转移到账户 B)。所以我打算这样进行:
- 定义初始数据,如 Refs 矩阵或更好的东西
- 生成随机操作来执行:
[ random-account-source-id(0, N_MAX) , random-account-destination-id(0, N_MAX), random-money (0, 1000) ]
- 将事务插入数据结构
- 对于矩阵中的所有插入,将资金从源 ID 同步转移到目的地 ID,例如:
for i=0; i lt N; i++; synchronize: transfer (matrix[i].source,matrix[i].dest,matrix[i].money)
那么,我不确定这一点,也许:
(defn do-all[]
(dosync
(when (pos? N)
(transfer (get matrix [pos 1], get matrix [pos 2], get matrix [pos 3])))))