Clojure China

在 Clojure 怎么实现 reactive data?

#1

看了 Vue 的新 API 在想 Clojure 里面有没有类似的写法可以抽象出来. 不过 Clojure 数据是不可变的, 肯定不能一样用…

import { value, computed } from 'vue'

const count = value(0)
const countPlusOne = computed(() => count.value + 1)

console.log(countPlusOne.value) // 1

count.value++
console.log(countPlusOne.value) // 2

参考 https://github.com/vuejs/rfcs/blob/function-apis/active-rfcs/0000-function-api.md

包括 React Hooks 那边也是相似的, 怎么把整个 Reactive 的行为表示出来?

#2

使用atom和add-watch可以做到,然后可以实现一个自己的let宏来简化写法。