-
Notifications
You must be signed in to change notification settings - Fork 0
/
arcana_signals.gleam
47 lines (39 loc) · 996 Bytes
/
arcana_signals.gleam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
pub opaque type Signal(value) {
Signal(value)
}
@external(javascript, "./signals_ffi.mjs", "_new")
pub fn new(value: t) -> Signal(t) {
Signal(value)
}
@external(javascript, "./signals_ffi.mjs", "set")
pub fn set(_signal: Signal(t), value: t) -> Signal(t) {
Signal(value)
}
@external(javascript, "./signals_ffi.mjs", "value")
pub fn value(signal: Signal(t)) -> t {
case signal {
Signal(value) -> value
}
}
@external(javascript, "./signals_ffi.mjs", "peek")
pub fn peek(signal: Signal(t)) -> t {
case signal {
Signal(value) -> value
}
}
@external(javascript, "./signals_ffi.mjs", "computed")
pub fn computed(fun: fn() -> t) -> t {
fun()
}
@external(javascript, "./signals_ffi.mjs", "untracked")
pub fn untracked(fun: fn() -> t) -> t {
fun()
}
@external(javascript, "./signals_ffi.mjs", "effect")
pub fn effect(_fun: fn() -> Nil) -> fn() -> Nil {
fn() { Nil }
}
@external(javascript, "./signals_ffi.mjs", "batch")
pub fn batch(_fun: fn() -> Nil) -> Nil {
Nil
}