Open oovm opened 1 month ago
比如 koka 的话就是这样写
effect state<a>
fun get() : a
fun set( x : a ) : ()
fun state( init : a, action : () -> <state<a>,div|e> b ) : <div|e> b
var st := init
with handler
fun get() st
fun set(i) st := i
sumdown()
fun sumdown( sum : int = 0 ) : <state<int>,div> int
val i = get()
if i <= 0 then sum else
set( i - 1 )
sumdown( sum + i )
effect group 用法感觉比较怪异
别的语言比较流行这种风格: