HalogenのuseState
useStateを使った感じ
purs(hs)Hook.do
width /\ widthId <- Hooks.useState Nothing
初期値を渡す
ここではたまたまNothingだっただけ

width
がstate
wdithId
は
Hooks.put
などに適用することで、setWidth的なものになる
イメージ的には、 setWidth = Hooks.put widthId
putの他にも, getやmodify, modify_などもある
State Monadと同じ
ここでsetHogeみたいな関数を使いたい場合は、
useStateFn
を使うと良い
purs(hs)manyStates = Hooks.do
age /\ modifyAge <- useStateFn Hooks.modify_ 42
fruit /\ setFruit <- useStateFn Hooks.put "banana"
let
handler :: HookM _ Unit
handler = do
modifyAge \n -> n + 10
setFruit "strawberry"
困ることないだろうし、使って良さそう

強いて言えば、初期化時に状態を変更する関数(modifyとか)を渡さないといけないのがめんどいが、defaultよりはマシな感じがする