module std/core/typesstd/core/types
pub infixr 80 (^)
pub infixl 70 (*), (%), (/), cdiv, cmod
pub infixr 60 (++)
pub infixl 60 (+), (-)
pub infixr 55 (++.)
pub infix 40 (!=), (==), (<=), (>=), (<), (>)
pub infixr 30 (&&)
pub infixr 20 (||)
pub type intstd/core/types/int: V
pub value type float64std/core/types/float64: V
pub value type charstd/core/types/char: V
pub type stringstd/core/types/string: V
pub value type int8std/core/types/int8: V
pub value type int16std/core/types/int16: V
pub value type int32std/core/types/int32: V
pub value type int64std/core/types/int64: V
pub value type ssize_tstd/core/types/ssize_t: V
pub value type intptr_tstd/core/types/intptr_t: V
pub value type float32std/core/types/float32: V
pub type vectorstd/core/types/vector: V -> V<aa: V>
pub type anystd/core/types/any: V
pub type @reuse
pub extern @no-reuse() : @reusestd/core/types/total: E
c inline "NULL"
js inline "null"
pub type totalstd/core/types/total: E :: E
pub type effect-extendstd/core/types/effect-extend: (X, E) -> E :: (X,E) -> E
pub type divstd/core/types/div: X :: X
pub type ndetstd/core/types/ndet: X :: X
pub type allocstd/core/types/alloc: H -> X :: H -> X
pub type readstd/core/types/read: H -> X :: H -> X
pub type writestd/core/types/write: H -> X :: H -> X
pub alias ststd/core/types/st: H -> E<hh: H> = <std/core/types/total: Ereadstd/core/types/read: H -> X<hh: H>, writestd/core/types/write: H -> X<hh: H>, allocstd/core/types/alloc: H -> X<hh: H>>
pub type globalstd/core/types/global: H :: H
pub type handledstd/core/types/handled: ((E, V) -> V) -> X :: HX -> X;
pub type handled1std/core/types/handled1: ((E, V) -> V) -> X :: HX -> X;
pub type nhandledstd/core/types/nhandled: ((E, V) -> V) -> X :: HX -> X;
pub type nhandled1std/core/types/nhandled1: ((E, V) -> V) -> X :: HX -> X;
pub type voidstd/core/types/void: V
pub type boolstd/core/types/bool: V
con Falsestd/core/types/False: bool
con Truestd/core/types/True: bool
pub struct unitstd/core/types/unit: V
pub value struct tuple2std/core/types/tuple2: (V, V) -> V<aa: V,bb: V>(fststd/core/types/tuple2/fst: forall<a,b> (tuple2 : (a, b)) -> a:aa: V,sndstd/core/types/tuple2/snd: forall<a,b> (tuple2 : (a, b)) -> b:bb: V)
pub value struct tuple3std/core/types/tuple3: (V, V, V) -> V<aa: V,bb: V,cc: V>(fststd/core/types/tuple3/fst: forall<a,b,c> (tuple3 : (a, b, c)) -> a:aa: V,sndstd/core/types/tuple3/snd: forall<a,b,c> (tuple3 : (a, b, c)) -> b:bb: V,thdstd/core/types/tuple3/thd: forall<a,b,c> (tuple3 : (a, b, c)) -> c:cc: V)
pub struct tuple4std/core/types/tuple4: (V, V, V, V) -> V<aa: V,bb: V,cc: V,dd: V>(fststd/core/types/tuple4/fst: forall<a,b,c,d> (tuple4 : (a, b, c, d)) -> a:aa: V,sndstd/core/types/tuple4/snd: forall<a,b,c,d> (tuple4 : (a, b, c, d)) -> b:bb: V,thdstd/core/types/tuple4/thd: forall<a,b,c,d> (tuple4 : (a, b, c, d)) -> c:cc: V,field4std/core/types/tuple4/field4: forall<a,b,c,d> (tuple4 : (a, b, c, d)) -> d:dd: V)
pub struct tuple5std/core/types/tuple5: (V, V, V, V, V) -> V<aa: V,bb: V,cc: V,dd: V,ee: V>(fststd/core/types/tuple5/fst: forall<a,b,c,d,a1> (tuple5 : (a, b, c, d, a1)) -> a:aa: V,sndstd/core/types/tuple5/snd: forall<a,b,c,d,a1> (tuple5 : (a, b, c, d, a1)) -> b:bb: V,thdstd/core/types/tuple5/thd: forall<a,b,c,d,a1> (tuple5 : (a, b, c, d, a1)) -> c:cc: V,field4std/core/types/tuple5/field4: forall<a,b,c,d,a1> (tuple5 : (a, b, c, d, a1)) -> d:dd: V,field5std/core/types/tuple5/field5: forall<a,b,c,d,a1> (tuple5 : (a, b, c, d, a1)) -> a1:ee: V)
pub value type maybestd/core/types/maybe: V -> V<aa: V>
con Nothingstd/core/types/Nothing: forall<a> maybe<a>
con Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>( value : aa: V )
pub value type eitherstd/core/types/either: (V, V) -> V<aa: V,bb: V>
con Leftstd/core/types/Left: forall<a,b> (left : a) -> either<a,b>( left : aa: V )
con Rightstd/core/types/Right: forall<a,b> (right : b) -> either<a,b>( right : bb: V )
pub type orderstd/core/types/order: V
Ltstd/core/types/Lt: order
Eqstd/core/types/Eq: order
Gtstd/core/types/Gt: order
pub value type order2std/core/types/order2: V -> V<aa: V>
Lt2std/core/types/Lt2: forall<a> (lt : a, gt : a) -> order2<a>( lt: aa: V, gt : aa: V )
Eq2std/core/types/Eq2: forall<a> (eq : a) -> order2<a>( eq: aa: V )
Gt2std/core/types/Gt2: forall<a> (lt : a, gt : a) -> order2<a>( lt: aa: V, gt : aa: V )
pub type liststd/core/types/list: V -> V<aa: V>
con Nilstd/core/types/Nil: forall<a> list<a> con Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(head:aa: V, tail : liststd/core/types/list: V -> V<aa: V> )
pub value type boxstd/core/types/box: V -> V<aa: V>
con Boxstd/core/types/Box: forall<a> (unbox : a) -> box<a>( unboxstd/core/types/box/unbox: forall<a> (box : box<a>) -> a : aa: V )
pub reference type padstd/core/types/pad: V
Padstd/core/types/Pad: pad
pub noinline fip fun keepstd/core/types/keep: forall<a> (x : a) -> a( xx: $2088 : aa: V )result: -> total 2096 : astd/core/types/total: E
xx: $2088
pub fip fun idstd/core/types/id: forall<a> (x : a) -> a(xx: $2101 : aa: V)result: -> total 2109 : astd/core/types/total: E
xx: $2101
pub fip fun (&&)std/core/types/(&&): (x : bool, y : bool) -> bool( xx: bool : boolstd/core/types/bool: V, yy: bool : boolstd/core/types/bool: V)result: -> total bool : boolstd/core/types/bool: V if xx: bool then yy: bool else Falsestd/core/types/False: bool
pub fip fun (||)std/core/types/(||): (x : bool, y : bool) -> bool( xx: bool : boolstd/core/types/bool: V, yy: bool : boolstd/core/types/bool: V)result: -> total bool : boolstd/core/types/bool: V if xx: bool then Truestd/core/types/True: bool else yy: bool
pub fip fun bool/(!)std/core/types/bool/(!): (b : bool) -> bool( bb: bool : boolstd/core/types/bool: V )result: -> total bool : boolstd/core/types/bool: V
if bb: bool then Falsestd/core/types/False: bool else Truestd/core/types/True: bool
pub fip fun notstd/core/types/not: (b : bool) -> bool( bb: bool : boolstd/core/types/bool: V )result: -> total bool : boolstd/core/types/bool: V
if bb: bool then Falsestd/core/types/False: bool else Truestd/core/types/True: bool
extern import
js file "inline/types.js"
pub inline fip extern @make-int32( i : intstd/core/types/int: V) : int32std/core/types/int32: V
c "kk_integer_clamp32"
cs "Primitive.IntToInt32"
js "$std_core_types._int_clamp32"
pub fip extern @make-ssize_t( ii: int : intstd/core/types/int: V) : ssize_tstd/core/types/ssize_t: V
c "kk_integer_clamp_ssize_t"
cs "Primitive.IntToInt32"
js "$std_core_types._int_clamp32"
pub extern (++)std/core/types/(++): (x : string, y : string) -> string(xx: string : stringstd/core/types/string: V, yy: string : stringstd/core/types/string: V) : stringstd/core/types/string: V
c "kk_string_cat"
inline "(#1 + #2)"
pub noinline extern @open<e1e1: E::E,e2e2: E::E,aa: V,bb: V>( xx: $2167 : aa: V ) : e2e2: E bb: V
inline "#1"
pub type hdivstd/core/types/hdiv: (H, V, E) -> P :: (H,V,E) -> P
pub type edivstd/core/types/ediv: (X, V, E) -> P :: (X,V,E) -> P
pub type refstd/core/types/ref: (H, V) -> V :: (H,V) -> V
pub inline extern refstd/core/types/ref: forall<a,h> (value : a) -> (alloc<h>) ref<h,a>( value : aa: V) : allocstd/core/types/alloc: H -> X<hh: H> refstd/core/types/ref: (H, V) -> V<hh: H,aa: V>
c "kk_ref_alloc"
cs inline "new Ref<##1,##2>(#1)"
js inline "{ value: #1 }"
pub inline extern setstd/core/types/set: forall<a,h> (ref : ref<h,a>, assigned : a) -> (write<h>) ()( ^ref : refstd/core/types/ref: (H, V) -> V<hh: H,aa: V>, assigned : aa: V) : <std/core/types/total: Ewritestd/core/types/write: H -> X<hh: H>> (std/core/types/unit: V)std/core/types/unit: V
c "kk_ref_set_borrow"
cs inline "#1.Set(#2)"
js inline "((#1).value = #2)"
pub inline extern ref/(!)std/core/types/ref/(!): forall<h,a,e> (ref : ref<h,a>) -> <read<h>|e> a with hdiv<h,a,e> : forall<hh: H,aa: V,ee: E> ( ref : refstd/core/types/ref: (H, V) -> V<hh: H,aa: V>) -> <readstd/core/types/read: H -> X<hh: H>|std/core/types/effect-extend: (X, E) -> Eee: E> aa: V with(hdivstd/core/types/hdiv: (H, V, E) -> P<hh: H,aa: V,ee: E>)
c "kk_ref_get"
cs inline "#1.Value"
js inline "#1.value"
pub inline extern modifystd/core/types/modify: forall<h,a,b,e> (ref : ref<h,a>, f : forall<h1> (local-var<h1,a>) -> <local<h1>|e> b) -> <read<h>,write<h>|e> b with hdiv<h,a,e> : forall<hh: H,aa: V,bb: V,ee: E> ( ref : refstd/core/types/ref: (H, V) -> V<hh: H,aa: V>, f : forall<ss: H> local-varstd/core/types/local-var: (H, V) -> V<ss: H,aa: V> -> <localstd/core/types/local: H -> X<ss: H>|std/core/types/effect-extend: (X, E) -> Eee: E> bb: V) -> <readstd/core/types/read: H -> X<hh: H>,writestd/core/types/write: H -> X<hh: H>|std/core/types/effect-extend: (X, E) -> Eee: E> bb: V with(hdivstd/core/types/hdiv: (H, V, E) -> P<hh: H,aa: V,ee: E>)
c "kk_ref_modify"
js inline "((#2)(#1))"
pub extern runstd/core/types/run: forall<e,a> (action : forall<h> () -> <alloc<h>,read<h>,write<h>|e> a) -> e a : forall<ee: E,aa: V> ( action : forall<hh: H> () -> <allocstd/core/types/alloc: H -> X<hh: H>,readstd/core/types/read: H -> X<hh: H>,writestd/core/types/write: H -> X<hh: H> |std/core/types/effect-extend: (X, E) -> E ee: E> aa: V ) -> ee: E aa: V
c inline "(kk_function_call(kk_box_t,(kk_function_t,kk_context_t*),#1,(#1,kk_context()),kk_context()))"
cs inline "Primitive.Run<##2>(#1)"
js inline "((#1)())"
pub inline extern mask-ststd/core/types/mask-st: forall<a,h,e> (() -> e a) -> (() -> <st<h>|e> a) : forall<aa: V,hh: H,ee: E> (() -> ee: E aa: V) -> totalstd/core/types/total: E (() -> <ststd/core/types/st: H -> E<hh: H>|ee: E> aa: V)
inline "#1"
pub type localstd/core/types/local: H -> X :: (H) -> X
pub type local-varstd/core/types/local-var: (H, V) -> V :: (H,V) -> V
pub inline extern local-newstd/core/types/local-new: forall<a,e,h> (value : a) -> <local<h>|e> local-var<h,a><a,s,e>(value:aa: V) : <localstd/core/types/local: H -> X<ss: H>|std/core/types/effect-extend: (X, E) -> Eee: E> local-varstd/core/types/local-var: (H, V) -> V<ss: H,aa: V>
c "kk_ref_alloc"
cs inline "new Ref<##1,##2>(#1)"
js inline "{ value: #1 }"
pub inline extern local-setstd/core/types/local-set: forall<a,e,h> (v : local-var<h,a>, assigned : a) -> <local<h>|e> ()<a,s,e>( ^v: local-varstd/core/types/local-var: (H, V) -> V<ss: H,aa: V>, assigned: aa: V) : <localstd/core/types/local: H -> X<ss: H>|std/core/types/effect-extend: (X, E) -> Eee: E> (std/core/types/unit: V)std/core/types/unit: V
c "kk_ref_set_borrow"
cs inline "#1.Set(#2)";
js inline "((#1).value = #2)"
pub inline extern local-getstd/core/types/local-get: forall<a,h,e> (v : local-var<h,a>) -> <local<h>|e> a with hdiv<h,a,e> : forall<aa: V,ss: H,ee: E> (v: local-varstd/core/types/local-var: (H, V) -> V<ss: H,aa: V>) -> <localstd/core/types/local: H -> X<ss: H>|std/core/types/effect-extend: (X, E) -> Eee: E> aa: V with(hdivstd/core/types/hdiv: (H, V, E) -> P<ss: H,aa: V,ee: E>)
c "kk_ref_get"
cs inline "#1.Value";
js inline "((#1).value)";
pub inline fun local-scopestd/core/types/local-scope: forall<a,e> (action : forall<h> () -> <local<h>|e> a) -> e a<aa: V,ee: E>( actionaction: forall<h> () -> <local<h>|$2248> $2247 : forall<hh: H> () -> <localstd/core/types/local: H -> X<hh: H> |std/core/types/effect-extend: (X, E) -> E ee: E> aa: V)result: -> 2277 2276 : ee: E aa: V
unsafe-no-local-caststd/core/types/unsafe-no-local-cast: (action : forall<h> () -> <local<h>|$2248> $2247) -> $2248 (() -> $2248 $2247)(actionaction: forall<h> () -> <local<h>|$2248> $2247)()
inline extern unsafe-no-local-caststd/core/types/unsafe-no-local-cast: forall<a,e> (action : forall<h> () -> <local<h>|e> a) -> (() -> e a) : forall<aa: V,ee: E> ( action : forall<hh: H> () -> <localstd/core/types/local: H -> X<hh: H>|std/core/types/effect-extend: (X, E) -> Eee: E> aa: V ) -> ((std/core/types/total: E) -> ee: E aa: V)
inline "#1"
pub inline extern @byref(loc : aa: V) : astd/core/types/total: E
inline "#1"
pub inline extern @toany( x : aa: V ) : anystd/core/types/any: V
inline "#1"
cs inline "(object)(#1)"
pub type @valueop<ee: E::E,aa: V::V>
con @Valueop
pub value type @optional<aa: V>
con @Optional( value : aa: V )
con @None
extern import
c header-end-file "inline/types-cctx.h"
js file "inline/types-cctx.js"
extern import
c file "inline/types-cctx.c"
pub type @field-addr<aa: V>
pub fip extern @field-addr-of( xx: $2285 : aa: V, connameconname: string : stringstd/core/types/string: V, fieldnamefieldname: string : stringstd/core/types/string: V ) : @field-addrstd/core/types/total: E<aa: V>
c inline "kk_field_addr_null()"
inline ""
abstract value type cctxstd/core/types/cctx: (V, V) -> V<aa: V,bb: V>
con @Cctx( resstd/core/types/cctx/res: forall<a,b> (cctx : cctx<a,b>) -> a : aa: V, holeptrstd/core/types/cctx/holeptr: forall<a,b> (cctx : cctx<a,b>) -> @field-addr<b> : @field-addr<bb: V> )
pub alias ctxstd/core/types/ctx: V -> V<aa: V> = cctxstd/core/types/cctx: (V, V) -> V<aa: V,aa: V>
pub inline fip extern @cctx-hole-create() : astd/core/types/total: E
c inline "kk_cctx_hole()"
js inline "undefined"
pub inline fip extern @cctx-create( x : aa: V, xhole : @field-addr<bb: V> ) : cctxstd/core/types/cctx: (V, V) -> V<aa: V,bb: V>
c "kk_cctx_create"
js "$std_core_types._cctx_create"
pub inline fip extern @cctx-extend( c : cctxstd/core/types/cctx: (V, V) -> V<aa: V,bb: V>, x : bb: V, xhole : @field-addr<cc: V> ) : cctxstd/core/types/cctx: (V, V) -> V<aa: V,cc: V>
c inline "kk_cctx_extend(#1,#2,#3,kk_context())"
js "$std_core_types._cctx_extend"
pub inline fip extern @cctx-compose-extend( c1 : cctxstd/core/types/cctx: (V, V) -> V<aa: V,bb: V>, c2 : cctxstd/core/types/cctx: (V, V) -> V<bb: V,cc: V> ) : cctxstd/core/types/cctx: (V, V) -> V<aa: V,cc: V>
c inline "kk_cctx_extend(#1,#2.res,#2.holeptr,kk_context())"
js "$std_core_types._cctx_compose"
pub inline fip extern cctx/(++.)std/core/types/cctx/(++.): forall<a,b> (c : cctx<a,b>, x : b) -> a( c : cctxstd/core/types/cctx: (V, V) -> V<aa: V,bb: V>, x : bb: V ) : astd/core/types/total: E
c inline "kk_cctx_apply(#1,#2,kk_context())"
js "$std_core_types._cctx_apply"
pub inline fip extern cctx/(++)std/core/types/cctx/(++): forall<a,b,c> (c1 : cctx<a,b>, c2 : cctx<b,c>) -> cctx<a,c>( c1 : cctxstd/core/types/cctx: (V, V) -> V<aa: V,bb: V>, c2 : cctxstd/core/types/cctx: (V, V) -> V<bb: V,cc: V> ) : cctxstd/core/types/cctx: (V, V) -> V<aa: V,cc: V>
c inline "kk_cctx_compose(#1,#2,kk_context())"
js "$std_core_types._cctx_compose"
pub inline fip extern cctx/emptystd/core/types/cctx/empty: forall<a> () -> cctx<a,a>() : cctxstd/core/types/cctx: (V, V) -> V<aa: V,aa: V>
c "kk_cctx_empty"
js "$std_core_types._cctx_empty"