OCanren
Implementation of miniKanren relational (logic) EDSL
1024" x-on:close-sidebar="sidebar=window.innerWidth > 1024 && true">
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
class virtual ['ia, 'a, 'sa, 'inh, 'extra, 'syn] logic'_t : object ... end
class ['a, 'extra_logic'] fmt_logic'_t : ( Format.formatter ->
'a ->
unit ) -> ( Format.formatter ->
'a logic' ->
unit ) -> object ... end
val fmt_logic' :
( Format.formatter -> 'a -> unit ) ->
Format.formatter ->
'a logic' ->
unit
class ['a, 'syn, 'extra_logic'] foldr_logic'_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'a logic' -> 'syn ) -> object ... end
val foldr_logic' : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn
class ['a, 'syn, 'extra_logic'] foldl_logic'_t : ( 'syn -> 'a -> 'syn ) -> ( 'syn -> 'a logic' -> 'syn ) -> object ... end
val foldl_logic' : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn
class ['a, 'extra_logic'] compare_logic'_t : ( 'a ->
'a ->
GT.comparison ) -> ( 'a logic' ->
'a logic' ->
GT.comparison ) -> object ... end
val compare_logic' :
( 'a -> 'a -> GT.comparison ) ->
'a logic' ->
'a logic' ->
GT.comparison
class ['a, 'extra_logic'] eq_logic'_t : ( 'a -> 'a -> bool ) -> ( 'a logic' -> 'a logic' -> bool ) -> object ... end
class ['a, 'extra_logic'] html_logic'_t : ( unit ->
'a ->
HTML.er ) -> ( unit ->
'a logic' ->
HTML.er ) -> object ... end
class ['a, 'a_2, 'extra_logic', 'syn_logic'] gmap_logic'_t : ( unit ->
'a ->
'a_2 ) -> ( unit ->
'a logic' ->
'a_2 logic' ) -> object ... end
class ['a, 'extra_logic'] show_logic'_t : ( unit ->
'a ->
string ) -> ( unit ->
'a logic' ->
string ) -> object ... end
val show_logic' : ( 'a -> string ) -> 'a logic' -> string
val logic' :
( [ _, 'a, 'sa, 'inh, 'a logic', 'syn ] logic'_t ->
'inh ->
'a logic' ->
'syn,
< fmt :
( Format.formatter -> 'a -> unit ) ->
Format.formatter ->
'a logic' ->
unit
; foldr : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn
; foldl : ( 'syn -> 'a -> 'syn ) -> 'syn -> 'a logic' -> 'syn
; compare :
( 'a -> 'a -> GT.comparison ) ->
'a logic' ->
'a logic' ->
GT.comparison
; eq : ( 'a -> 'a -> bool ) -> 'a logic' -> 'a logic' -> bool
; html : ( 'a -> HTML.er ) -> 'a logic' -> HTML.er
; gmap : ( 'a -> 'a_2 ) -> 'a logic' -> 'a_2 logic'
; show : ( 'a -> string ) -> 'a logic' -> string >,
( ( 'inh2 -> 'a1 logic' -> 'syn3 ) ->
[ 'a1_i, 'a1, 'a1_s, 'inh2, 'a1 logic', 'syn3 ] logic'_t ) ->
'inh2 ->
'a1 logic' ->
'syn3 )
GT.t
class virtual ['ia, 'a, 'sa, 'ib, 'b, 'sb, 'inh, 'extra, 'syn] t_t : object ... end
class ['a, 'b, 'extra_t] fmt_t_t : ( Format.formatter ->
'a ->
unit ) -> ( Format.formatter ->
'b ->
unit ) -> ( Format.formatter ->
( 'a, 'b ) t ->
unit ) -> object ... end
val fmt_t :
( Format.formatter -> 'a -> unit ) ->
( Format.formatter -> 'b -> unit ) ->
Format.formatter ->
( 'a, 'b ) t ->
unit
val foldr_t :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) t ->
'syn
val foldl_t :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) t ->
'syn
class ['a, 'b, 'extra_t] compare_t_t : ( 'a ->
'a ->
GT.comparison ) -> ( 'b ->
'b ->
GT.comparison ) -> ( ( 'a, 'b ) t ->
( 'a, 'b ) t ->
GT.comparison ) -> object ... end
val compare_t :
( 'a -> 'a -> GT.comparison ) ->
( 'b -> 'b -> GT.comparison ) ->
( 'a, 'b ) t ->
( 'a, 'b ) t ->
GT.comparison
val show_t : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) t -> string
val t :
( [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) t, 'syn ] t_t ->
'inh ->
( 'a, 'b ) t ->
'syn,
< fmt :
( Format.formatter -> 'a -> unit ) ->
( Format.formatter -> 'b -> unit ) ->
Format.formatter ->
( 'a, 'b ) t ->
unit
; foldr :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) t ->
'syn
; foldl :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) t ->
'syn
; compare :
( 'a -> 'a -> GT.comparison ) ->
( 'b -> 'b -> GT.comparison ) ->
( 'a, 'b ) t ->
( 'a, 'b ) t ->
GT.comparison
; eq :
( 'a -> 'a -> bool ) ->
( 'b -> 'b -> bool ) ->
( 'a, 'b ) t ->
( 'a, 'b ) t ->
bool
; html : ( 'a -> HTML.er ) -> ( 'b -> HTML.er ) -> ( 'a, 'b ) t -> HTML.er
; gmap :
( 'a -> 'a_2 ) ->
( 'b -> 'b_2 ) ->
( 'a, 'b ) t ->
( 'a_2, 'b_2 ) t
; show : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) t -> string >,
( ( 'inh3 -> ( 'a1, 'a2 ) t -> 'syn4 ) ->
[ 'a1_i, 'a1, 'a1_s, 'a2_i, 'a2, 'a2_s, 'inh3, ( 'a1, 'a2 ) t, 'syn4 ]
t_t ) ->
'inh3 ->
( 'a1, 'a2 ) t ->
'syn4 )
GT.t
class virtual ['ia, 'a, 'sa, 'ib, 'b, 'sb, 'inh, 'extra, 'syn] ground_t : object ... end
class ['a, 'b, 'extra_ground] fmt_ground_t : ( Format.formatter ->
'a ->
unit ) -> ( Format.formatter ->
'b ->
unit ) -> ( Format.formatter ->
( 'a, 'b ) ground ->
unit ) -> object ... end
val fmt_ground :
( Format.formatter -> 'a -> unit ) ->
( Format.formatter -> 'b -> unit ) ->
Format.formatter ->
( 'a, 'b ) ground ->
unit
class ['a, 'b, 'syn, 'extra_ground] foldr_ground_t : ( 'syn ->
'a ->
'syn ) -> ( 'syn ->
'b ->
'syn ) -> ( 'syn ->
( 'a, 'b ) ground ->
'syn ) -> object ... end
val foldr_ground :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) ground ->
'syn
class ['a, 'b, 'syn, 'extra_ground] foldl_ground_t : ( 'syn ->
'a ->
'syn ) -> ( 'syn ->
'b ->
'syn ) -> ( 'syn ->
( 'a, 'b ) ground ->
'syn ) -> object ... end
val foldl_ground :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) ground ->
'syn
class ['a, 'b, 'extra_ground] compare_ground_t : ( 'a ->
'a ->
GT.comparison ) -> ( 'b ->
'b ->
GT.comparison ) -> ( ( 'a, 'b ) ground ->
( 'a, 'b ) ground ->
GT.comparison ) -> object ... end
val compare_ground :
( 'a -> 'a -> GT.comparison ) ->
( 'b -> 'b -> GT.comparison ) ->
( 'a, 'b ) ground ->
( 'a, 'b ) ground ->
GT.comparison
class ['a, 'b, 'extra_ground] eq_ground_t : ( 'a ->
'a ->
bool ) -> ( 'b ->
'b ->
bool ) -> ( ( 'a, 'b ) ground ->
( 'a, 'b ) ground ->
bool ) -> object ... end
class ['a, 'b, 'extra_ground] html_ground_t : ( unit ->
'a ->
HTML.er ) -> ( unit ->
'b ->
HTML.er ) -> ( unit ->
( 'a, 'b ) ground ->
HTML.er ) -> object ... end
class ['a, 'a_2, 'b, 'b_2, 'extra_ground, 'syn_ground] gmap_ground_t : ( unit ->
'a ->
'a_2 ) -> ( unit ->
'b ->
'b_2 ) -> ( unit ->
( 'a, 'b ) ground ->
( 'a_2, 'b_2 ) ground ) -> object ... end
class ['a, 'b, 'extra_ground] show_ground_t : ( unit ->
'a ->
string ) -> ( unit ->
'b ->
string ) -> ( unit ->
( 'a, 'b ) ground ->
string ) -> object ... end
val show_ground :
( 'a -> string ) ->
( 'b -> string ) ->
( 'a, 'b ) ground ->
string
val ground :
( [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) ground, 'syn ] ground_t ->
'inh ->
( 'a, 'b ) ground ->
'syn,
< fmt :
( Format.formatter -> 'a -> unit ) ->
( Format.formatter -> 'b -> unit ) ->
Format.formatter ->
( 'a, 'b ) ground ->
unit
; foldr :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) ground ->
'syn
; foldl :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) ground ->
'syn
; compare :
( 'a -> 'a -> GT.comparison ) ->
( 'b -> 'b -> GT.comparison ) ->
( 'a, 'b ) ground ->
( 'a, 'b ) ground ->
GT.comparison
; eq :
( 'a -> 'a -> bool ) ->
( 'b -> 'b -> bool ) ->
( 'a, 'b ) ground ->
( 'a, 'b ) ground ->
bool
; html :
( 'a -> HTML.er ) ->
( 'b -> HTML.er ) ->
( 'a, 'b ) ground ->
HTML.er
; gmap :
( 'a -> 'a_2 ) ->
( 'b -> 'b_2 ) ->
( 'a, 'b ) ground ->
( 'a_2, 'b_2 ) ground
; show :
( 'a -> string ) ->
( 'b -> string ) ->
( 'a, 'b ) ground ->
string >,
( ( 'inh3 -> ( 'a1, 'a2 ) ground -> 'syn4 ) ->
[ 'a1_i,
'a1,
'a1_s,
'a2_i,
'a2,
'a2_s,
'inh3,
( 'a1, 'a2 ) ground,
'syn4 ]
ground_t ) ->
'inh3 ->
( 'a1, 'a2 ) ground ->
'syn4 )
GT.t
type ('a, 'b) logic = ('a * 'b) logic'
class virtual ['ia, 'a, 'sa, 'ib, 'b, 'sb, 'inh, 'extra, 'syn] logic_t : object ... end
class ['a, 'b, 'extra_logic] fmt_logic_t : ( Format.formatter ->
'a ->
unit ) -> ( Format.formatter ->
'b ->
unit ) -> ( Format.formatter ->
( 'a, 'b ) logic ->
unit ) -> object ... end
val fmt_logic :
( Format.formatter -> 'a -> unit ) ->
( Format.formatter -> 'b -> unit ) ->
Format.formatter ->
( 'a, 'b ) logic ->
unit
class ['a, 'b, 'syn, 'extra_logic] foldr_logic_t : ( 'syn ->
'a ->
'syn ) -> ( 'syn ->
'b ->
'syn ) -> ( 'syn ->
( 'a, 'b ) logic ->
'syn ) -> object ... end
val foldr_logic :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) logic ->
'syn
class ['a, 'b, 'syn, 'extra_logic] foldl_logic_t : ( 'syn ->
'a ->
'syn ) -> ( 'syn ->
'b ->
'syn ) -> ( 'syn ->
( 'a, 'b ) logic ->
'syn ) -> object ... end
val foldl_logic :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) logic ->
'syn
class ['a, 'b, 'extra_logic] compare_logic_t : ( 'a ->
'a ->
GT.comparison ) -> ( 'b ->
'b ->
GT.comparison ) -> ( ( 'a, 'b ) logic ->
( 'a, 'b ) logic ->
GT.comparison ) -> object ... end
val compare_logic :
( 'a -> 'a -> GT.comparison ) ->
( 'b -> 'b -> GT.comparison ) ->
( 'a, 'b ) logic ->
( 'a, 'b ) logic ->
GT.comparison
class ['a, 'b, 'extra_logic] eq_logic_t : ( 'a ->
'a ->
bool ) -> ( 'b ->
'b ->
bool ) -> ( ( 'a, 'b ) logic ->
( 'a, 'b ) logic ->
bool ) -> object ... end
class ['a, 'b, 'extra_logic] html_logic_t : ( unit ->
'a ->
HTML.er ) -> ( unit ->
'b ->
HTML.er ) -> ( unit ->
( 'a, 'b ) logic ->
HTML.er ) -> object ... end
class ['a, 'a_2, 'b, 'b_2, 'extra_logic, 'syn_logic] gmap_logic_t : ( unit ->
'a ->
'a_2 ) -> ( unit ->
'b ->
'b_2 ) -> ( unit ->
( 'a, 'b ) logic ->
( 'a_2, 'b_2 ) logic ) -> object ... end
class ['a, 'b, 'extra_logic] show_logic_t : ( unit ->
'a ->
string ) -> ( unit ->
'b ->
string ) -> ( unit ->
( 'a, 'b ) logic ->
string ) -> object ... end
val show_logic :
( 'a -> string ) ->
( 'b -> string ) ->
( 'a, 'b ) logic ->
string
val logic :
( [ _, 'a, 'sa, _, 'b, 'sb, 'inh, ( 'a, 'b ) logic, 'syn ] logic_t ->
'inh ->
( 'a, 'b ) logic ->
'syn,
< fmt :
( Format.formatter -> 'a -> unit ) ->
( Format.formatter -> 'b -> unit ) ->
Format.formatter ->
( 'a, 'b ) logic ->
unit
; foldr :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) logic ->
'syn
; foldl :
( 'syn -> 'a -> 'syn ) ->
( 'syn -> 'b -> 'syn ) ->
'syn ->
( 'a, 'b ) logic ->
'syn
; compare :
( 'a -> 'a -> GT.comparison ) ->
( 'b -> 'b -> GT.comparison ) ->
( 'a, 'b ) logic ->
( 'a, 'b ) logic ->
GT.comparison
; eq :
( 'a -> 'a -> bool ) ->
( 'b -> 'b -> bool ) ->
( 'a, 'b ) logic ->
( 'a, 'b ) logic ->
bool
; html :
( 'a -> HTML.er ) ->
( 'b -> HTML.er ) ->
( 'a, 'b ) logic ->
HTML.er
; gmap :
( 'a -> 'a_2 ) ->
( 'b -> 'b_2 ) ->
( 'a, 'b ) logic ->
( 'a_2, 'b_2 ) logic
; show : ( 'a -> string ) -> ( 'b -> string ) -> ( 'a, 'b ) logic -> string >,
( ( 'inh3 -> ( 'a1, 'a2 ) logic -> 'syn4 ) ->
[ 'a1_i,
'a1,
'a1_s,
'a2_i,
'a2,
'a2_s,
'inh3,
( 'a1, 'a2 ) logic,
'syn4 ]
logic_t ) ->
'inh3 ->
( 'a1, 'a2 ) logic ->
'syn4 )
GT.t
type ('a, 'b) injected = ( 'a, 'b ) groundi
val pair :
'a OCanren__Logic.ilogic ->
'b OCanren__Logic.ilogic ->
( 'a OCanren__Logic.ilogic, 'b OCanren__Logic.ilogic ) groundi
val reify :
( 'a -> 'b ) Env.Monad.t ->
( 'c -> 'd ) Env.Monad.t ->
( ( 'a, 'c ) groundi -> ( 'b, 'd ) logic ) Env.Monad.t
val prj_exn :
( 'a -> 'b ) Env.Monad.t ->
( 'c -> 'd ) Env.Monad.t ->
( ( 'a, 'c ) groundi -> ( 'b, 'd ) ground ) Env.Monad.t