#define ATS_DYNLOADFLAG 0 staload "lib/SATS/valid.sats" assume valid(a:viewt@ype,b:bool) = (a,bool b) implement{a} create_valid(value) = (value,true) // Create unvalid value by casting null pointer to type. implement{a} create_unvalid() = let staload UN = "prelude/SATS/unsafe.sats" in ($extval(a,"(void *)NULL"),false) //UNSAFE: end implement{a} unwrap_valid(v) = v.0 implement{a} is_valid(v) = v.1