// ets_tracing: off import { chain_ } from "../core.js" import type { Managed } from "../managed.js" import { succeed } from "../succeed.js" /** * Conditional logic * * @ets_data_first ifM_ */ export function ifM( onTrue: () => Managed, onFalse: () => Managed, __trace?: string ) { return (b: Managed) => ifM_(b, onTrue, onFalse, __trace) } /** * Conditional logic */ export function ifM_( b: Managed, onTrue: () => Managed, onFalse: () => Managed, __trace?: string ) { return chain_( b, (x) => (x ? (onTrue() as Managed) : onFalse()), __trace ) } /** * Conditional logic * * @ets_data_first if_ */ function _if( onTrue: () => Managed, onFalse: () => Managed ) { return (b: boolean) => if_(b, onTrue, onFalse) } /** * Conditional logic */ export function if_( b: boolean, onTrue: () => Managed, onFalse: () => Managed, __trace?: string ) { return ifM_(succeed(b), onTrue, onFalse, __trace) } export { _if as if }