Packages

Erlang code generator for Idris 2

Current section

Files

Jump to
idris2 src Idris.Idris2.Compiler.ES.Imperative.erl
Raw

src/Idris.Idris2.Compiler.ES.Imperative.erl

-module('Idris.Idris2.Compiler.ES.Imperative').
-compile('no_auto_import').
-compile('inline').
-compile({'inline_size',24}).
-export([
'case--compileToImperative-8959'/10,
'case--impConstAlt-8830'/4,
'case--impConstAlt-8795'/5,
'case--impConAlt-8728'/7,
'case--impConAlt-8662'/8,
'case--case block in case block in impExp-8568'/13,
'case--case block in impExp-8542'/10,
'case--impExp-8516'/7,
'case--impExp-8488'/5,
'case--impExp-8460'/5,
'case--impExp-8428'/7,
'case--impExp-8398'/6,
'case--case block in impExp-8343'/9,
'case--impExp-8303'/6,
'case--case block in case block in impExp-8261'/12,
'case--case block in impExp-8204'/10,
'case--impExp-8148'/6,
'case--case block in impExp-8092'/9,
'case--impExp-8052'/6,
'case--case block in case block in impExp-8010'/12,
'case--case block in impExp-7953'/10,
'case--impExp-7897'/6,
'case--impExp-7863'/7,
'case--case block in impExp-7819'/9,
'case--impExp-7795'/6,
'case--genName-7601'/3,
'case--isNameUsed-7544'/6,
'un--pairToReturn'/2,
'un--isNameUsedConstAlt'/2,
'un--isNameUsedConAlt'/2,
'un--isNameUsed'/2,
'un--impVectExp'/4,
'un--impTag'/2,
'un--impListExp'/3,
'un--impExp'/3,
'un--impConstAlt'/3,
'un--impConAlt'/4,
'un--getImp'/2,
'un--genName'/2,
'un--expToReturn'/2,
'un--compileToImperative'/3
]).
'case--compileToImperative-8959'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9) -> case V9 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V10, V11) -> fun (V12) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', V8, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V10, {'Idris.Compiler.ES.ImperativeAst.EvalExpStatement', V11}))}} end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impConstAlt-8830'(V0, V1, V2, V3) -> case V3 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V4, V5) -> fun (V6) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstant', V2}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V4, {'Idris.Compiler.ES.ImperativeAst.ReturnStatement', V5}))}} end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impConstAlt-8795'(V0, V1, V2, V3, V4) -> case V4 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V5, V6) -> fun (V7) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstant', V3}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V5, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V1, V6}))}} end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impConAlt-8728'(V0, V1, V2, V3, V4, V5, V6) -> case V6 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V7, V8) -> begin (V9 = ('Idris.Idris2.Prelude.Types.List':'un--length'('erased', V1))), begin (V12 = ('Idris.Idris2.Data.List':'un--zipWith'('erased', 'erased', 'erased', fun (V10) -> fun (V11) -> {'Idris.Builtin.MkPair', V11, {'Idris.Compiler.ES.ImperativeAst.IEConstructorArg', ('Idris.Idris2.Prelude.Types':'dn--un--cast_Cast__Nat_Int'(V10)), V4}} end end, ('Idris.Idris2.Prelude.Types':'dn--un--rangeFromTo_Range__Nat'((1 + 0), V9)), V1))), fun (V13) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstructorTag', ('un--impTag'(V3, V2))}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'un--replaceNamesExpS'(V12, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V7, {'Idris.Compiler.ES.ImperativeAst.ReturnStatement', V8}))))}} end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impConAlt-8662'(V0, V1, V2, V3, V4, V5, V6, V7) -> case V7 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V8, V9) -> begin (V10 = ('Idris.Idris2.Prelude.Types.List':'un--length'('erased', V2))), begin (V13 = ('Idris.Idris2.Data.List':'un--zipWith'('erased', 'erased', 'erased', fun (V11) -> fun (V12) -> {'Idris.Builtin.MkPair', V12, {'Idris.Compiler.ES.ImperativeAst.IEConstructorArg', ('Idris.Idris2.Prelude.Types':'dn--un--cast_Cast__Nat_Int'(V11)), V5}} end end, ('Idris.Idris2.Prelude.Types':'dn--un--rangeFromTo_Range__Nat'((1 + 0), V10)), V2))), fun (V14) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstructorTag', ('un--impTag'(V4, V3))}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'un--replaceNamesExpS'(V13, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V8, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V0, V9}))))}} end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in case block in impExp-8568'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12) -> case V12 of 0 -> {'Idris.Compiler.ES.ImperativeAst.ConstDecl', V2, V7}; 1 -> {'Idris.Compiler.ES.ImperativeAst.EvalExpStatement', V7}; _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in impExp-8542'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9) -> case V9 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V10, V11) -> begin (V13 = begin (V12 = {'Idris.Builtin.MkPair', V10, V11}), ('case--case block in case block in impExp-8568'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V10, V11, V12, ('un--isNameUsed'(V2, V0)))) end), ('un--pairToReturn'(V4, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V6, V13)), V10)), V11})) end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8516'(V0, V1, V2, V3, V4, V5, V6) -> case V6 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V7, V8) -> fun (V9) -> begin (V10 = (('un--impExp'(V5, 1, V0))(V9))), case V10 of {'Idris.Prelude.Types.Left', E2} -> (fun (V11) -> {'Idris.Prelude.Types.Left', V11} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V12) -> begin (V13 = {'Idris.Builtin.MkPair', V7, V8}), case V12 of {'Idris.Builtin.MkPair', E4, E5} -> (fun (V14, V15) -> begin (V17 = begin (V16 = {'Idris.Builtin.MkPair', V14, V15}), ('case--case block in case block in impExp-8568'(V0, V1, V2, V3, V4, V5, V7, V8, V13, V14, V15, V16, ('un--isNameUsed'(V2, V0)))) end), (('un--pairToReturn'(V4, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V7, V17)), V14)), V15}))(V9)) end end(E4, E5)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8488'(V0, V1, V2, V3, V4) -> case V4 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V5, V6) -> ('un--pairToReturn'(V2, {'Idris.Builtin.MkPair', V5, {'Idris.Compiler.ES.ImperativeAst.IEForce', V6}})) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8460'(V0, V1, V2, V3, V4) -> case V4 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V5, V6) -> ('un--pairToReturn'(V2, {'Idris.Builtin.MkPair', V5, {'Idris.Compiler.ES.ImperativeAst.IEDelay', V6}})) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8428'(V0, V1, V2, V3, V4, V5, V6) -> case V6 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V7, V8) -> ('un--pairToReturn'(V4, {'Idris.Builtin.MkPair', V7, {'Idris.Compiler.ES.ImperativeAst.IEConstructor', ('un--impTag'(V2, V1)), V8}})) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8398'(V0, V1, V2, V3, V4, V5) -> case V5 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V6, V7) -> ('un--pairToReturn'(V3, {'Idris.Builtin.MkPair', V6, {'Idris.Compiler.ES.ImperativeAst.IEPrimFnExt', V1, V7}})) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in impExp-8343'(V0, V1, V2, V3, V4, V5, V6, V7, V8) -> case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> fun (V9) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled const case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end end()); {'Idris.Prelude.Types.Just', E0} -> (fun (V10) -> ('un--impExp'(V4, 0, V10)) end(E0)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8303'(V0, V1, V2, V3, V4, V5) -> case V5 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V6, V7) -> fun (V8) -> begin (V10 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V9) -> ('un--impConstAlt'(V4, {'Idris.Prelude.Types.Nothing'}, V9)) end, V1))(V8))), case V10 of {'Idris.Prelude.Types.Left', E2} -> (fun (V11) -> {'Idris.Prelude.Types.Left', V11} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V12) -> begin (V14 = case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled const case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end()); {'Idris.Prelude.Types.Just', E4} -> (fun (V13) -> (('un--impExp'(V4, 0, V13))(V8)) end(E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V14 of {'Idris.Prelude.Types.Left', E5} -> (fun (V15) -> {'Idris.Prelude.Types.Left', V15} end(E5)); {'Idris.Prelude.Types.Right', E6} -> (fun (V16) -> begin (V17 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', V7, V12, {'Idris.Prelude.Types.Just', V16}}), {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V6, V17))} end end(E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in case block in impExp-8261'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11) -> case V11 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V12, V13) -> fun (V14) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V12, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V7, V13}))} end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in impExp-8204'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9) -> case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> fun (V10) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled const case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end end()); {'Idris.Prelude.Types.Just', E0} -> (fun (V11) -> fun (V12) -> begin (V13 = (('un--impExp'(V4, 1, V11))(V12))), case V13 of {'Idris.Prelude.Types.Left', E1} -> (fun (V14) -> {'Idris.Prelude.Types.Left', V14} end(E1)); {'Idris.Prelude.Types.Right', E2} -> (fun (V15) -> case V15 of {'Idris.Builtin.MkPair', E3, E4} -> (fun (V16, V17) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V16, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V8, V17}))} end(E3, E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E2)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8148'(V0, V1, V2, V3, V4, V5) -> case V5 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V6, V7) -> fun (V8) -> begin (V9 = ('un--genName'(V4, V8))), case V9 of {'Idris.Prelude.Types.Left', E2} -> (fun (V10) -> {'Idris.Prelude.Types.Left', V10} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V11) -> begin (V13 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V12) -> ('un--impConstAlt'(V4, {'Idris.Prelude.Types.Just', V11}, V12)) end, V1))(V8))), case V13 of {'Idris.Prelude.Types.Left', E4} -> (fun (V14) -> {'Idris.Prelude.Types.Left', V14} end(E4)); {'Idris.Prelude.Types.Right', E5} -> (fun (V15) -> begin (V22 = case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled const case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end()); {'Idris.Prelude.Types.Just', E6} -> (fun (V16) -> begin (V17 = (('un--impExp'(V4, 1, V16))(V8))), case V17 of {'Idris.Prelude.Types.Left', E7} -> (fun (V18) -> {'Idris.Prelude.Types.Left', V18} end(E7)); {'Idris.Prelude.Types.Right', E8} -> (fun (V19) -> case V19 of {'Idris.Builtin.MkPair', E9, E10} -> (fun (V20, V21) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V20, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V11, V21}))} end(E9, E10)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E8)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V22 of {'Idris.Prelude.Types.Left', E11} -> (fun (V23) -> {'Idris.Prelude.Types.Left', V23} end(E11)); {'Idris.Prelude.Types.Right', E12} -> (fun (V24) -> begin (V25 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', V7, V15, {'Idris.Prelude.Types.Just', V24}}), {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V6, {'Idris.Compiler.ES.ImperativeAst.LetDecl', V11, {'Idris.Prelude.Types.Nothing'}})), V25)), {'Idris.Compiler.ES.ImperativeAst.IEVar', V11}}} end end(E12)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E5)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in impExp-8092'(V0, V1, V2, V3, V4, V5, V6, V7, V8) -> case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> fun (V9) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled con case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end end()); {'Idris.Prelude.Types.Just', E0} -> (fun (V10) -> ('un--impExp'(V4, 0, V10)) end(E0)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-8052'(V0, V1, V2, V3, V4, V5) -> case V5 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V6, V7) -> fun (V8) -> begin (V10 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V9) -> ('un--impConAlt'(V4, {'Idris.Prelude.Types.Nothing'}, V7, V9)) end, V1))(V8))), case V10 of {'Idris.Prelude.Types.Left', E2} -> (fun (V11) -> {'Idris.Prelude.Types.Left', V11} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V12) -> begin (V14 = case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled con case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end()); {'Idris.Prelude.Types.Just', E4} -> (fun (V13) -> (('un--impExp'(V4, 0, V13))(V8)) end(E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V14 of {'Idris.Prelude.Types.Left', E5} -> (fun (V15) -> {'Idris.Prelude.Types.Left', V15} end(E5)); {'Idris.Prelude.Types.Right', E6} -> (fun (V16) -> begin (V17 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', {'Idris.Compiler.ES.ImperativeAst.IEConstructorHead', V7}, V12, {'Idris.Prelude.Types.Just', V16}}), {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V6, V17))} end end(E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in case block in impExp-8010'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11) -> case V11 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V12, V13) -> fun (V14) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V12, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V7, V13}))} end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in impExp-7953'(V0, V1, V2, V3, V4, V5, V6, V7, V8, V9) -> case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> fun (V10) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled con case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end end()); {'Idris.Prelude.Types.Just', E0} -> (fun (V11) -> fun (V12) -> begin (V13 = (('un--impExp'(V4, 1, V11))(V12))), case V13 of {'Idris.Prelude.Types.Left', E1} -> (fun (V14) -> {'Idris.Prelude.Types.Left', V14} end(E1)); {'Idris.Prelude.Types.Right', E2} -> (fun (V15) -> case V15 of {'Idris.Builtin.MkPair', E3, E4} -> (fun (V16, V17) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V16, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V8, V17}))} end(E3, E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E2)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-7897'(V0, V1, V2, V3, V4, V5) -> case V5 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V6, V7) -> fun (V8) -> begin (V9 = ('un--genName'(V4, V8))), case V9 of {'Idris.Prelude.Types.Left', E2} -> (fun (V10) -> {'Idris.Prelude.Types.Left', V10} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V11) -> begin (V13 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V12) -> ('un--impConAlt'(V4, {'Idris.Prelude.Types.Just', V11}, V7, V12)) end, V1))(V8))), case V13 of {'Idris.Prelude.Types.Left', E4} -> (fun (V14) -> {'Idris.Prelude.Types.Left', V14} end(E4)); {'Idris.Prelude.Types.Right', E5} -> (fun (V15) -> begin (V22 = case V0 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled con case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V3))))}} end()); {'Idris.Prelude.Types.Just', E6} -> (fun (V16) -> begin (V17 = (('un--impExp'(V4, 1, V16))(V8))), case V17 of {'Idris.Prelude.Types.Left', E7} -> (fun (V18) -> {'Idris.Prelude.Types.Left', V18} end(E7)); {'Idris.Prelude.Types.Right', E8} -> (fun (V19) -> case V19 of {'Idris.Builtin.MkPair', E9, E10} -> (fun (V20, V21) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V20, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V11, V21}))} end(E9, E10)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E8)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V22 of {'Idris.Prelude.Types.Left', E11} -> (fun (V23) -> {'Idris.Prelude.Types.Left', V23} end(E11)); {'Idris.Prelude.Types.Right', E12} -> (fun (V24) -> begin (V25 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', {'Idris.Compiler.ES.ImperativeAst.IEConstructorHead', V7}, V15, {'Idris.Prelude.Types.Just', V24}}), {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V6, {'Idris.Compiler.ES.ImperativeAst.LetDecl', V11, {'Idris.Prelude.Types.Nothing'}})), V25)), {'Idris.Compiler.ES.ImperativeAst.IEVar', V11}}} end end(E12)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E5)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-7863'(V0, V1, V2, V3, V4, V5, V6) -> case V6 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V7, V8) -> ('un--pairToReturn'(V4, {'Idris.Builtin.MkPair', V7, {'Idris.Compiler.ES.ImperativeAst.IEPrimFn', V2, V8}})) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--case block in impExp-7819'(V0, V1, V2, V3, V4, V5, V6, V7, V8) -> case V8 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V9, V10) -> ('un--pairToReturn'(V3, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V5, V9)), {'Idris.Compiler.ES.ImperativeAst.IEApp', V6, V10}})) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--impExp-7795'(V0, V1, V2, V3, V4, V5) -> case V5 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V6, V7) -> fun (V8) -> begin (V9 = ('un--impListExp'(V4, V0, V8))), case V9 of {'Idris.Prelude.Types.Left', E2} -> (fun (V10) -> {'Idris.Prelude.Types.Left', V10} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V11) -> case V11 of {'Idris.Builtin.MkPair', E4, E5} -> (fun (V12, V13) -> (('un--pairToReturn'(V3, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V6, V12)), {'Idris.Compiler.ES.ImperativeAst.IEApp', V7, V13}}))(V8)) end(E4, E5)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'case--genName-7601'(V0, V1, V2) -> ((V2 + 1) rem 9223372036854775808).
'case--isNameUsed-7544'(V0, V1, V2, V3, V4, V5) -> case V5 of 0 -> ('un--isNameUsed'(V4, V1)); 1 -> ('Idris.Idris2.Prelude.Basics':'un--||'(('un--isNameUsed'(V4, V1)), fun () -> ('un--isNameUsed'(V4, V0)) end)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--pairToReturn'(V0, V1) -> case V0 of 1 -> case V1 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V2, V3) -> fun (V4) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', V2, V3}} end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end; 0 -> case V1 of {'Idris.Builtin.MkPair', E2, E3} -> (fun (V5, V6) -> fun (V7) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V5, {'Idris.Compiler.ES.ImperativeAst.ReturnStatement', V6}))} end end(E2, E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end; _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--isNameUsedConstAlt'(V0, V1) -> case V1 of {'Idris.Core.CompileExpr.MkNConstAlt', E0, E1} -> (fun (V2, V3) -> ('un--isNameUsed'(V0, V3)) end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--isNameUsedConAlt'(V0, V1) -> case V1 of {'Idris.Core.CompileExpr.MkNConAlt', E0, E1, E2, E3} -> (fun (V2, V3, V4, V5) -> ('un--isNameUsed'(V0, V5)) end(E0, E1, E2, E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--isNameUsed'(V0, V1) -> case V1 of {'Idris.Core.CompileExpr.NmLocal', E0, E1} -> (fun (V2, V3) -> ('Idris.Idris2.Core.Name':'dn--un--==_Eq__Name'(V3, V0)) end(E0, E1)); {'Idris.Core.CompileExpr.NmRef', E2, E3} -> (fun (V4, V5) -> ('Idris.Idris2.Core.Name':'dn--un--==_Eq__Name'(V5, V0)) end(E2, E3)); {'Idris.Core.CompileExpr.NmLam', E4, E5, E6} -> (fun (V6, V7, V8) -> ('un--isNameUsed'(V0, V8)) end(E4, E5, E6)); {'Idris.Core.CompileExpr.NmApp', E7, E8, E9} -> (fun (V9, V10, V11) -> ('Idris.Idris2.Prelude.Basics':'un--||'(('un--isNameUsed'(V0, V10)), fun () -> (('Idris.Idris2.Prelude.Interfaces':'un--any'('erased', 'erased', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V12) -> fun (V13) -> fun (V14) -> fun (V15) -> fun (V16) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V14, V15, V16)) end end end end end, fun (V17) -> fun (V18) -> fun (V19) -> fun (V20) -> fun (V21) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V19, V20, V21)) end end end end end}, fun (V22) -> ('un--isNameUsed'(V0, V22)) end))(V11)) end)) end(E7, E8, E9)); {'Idris.Core.CompileExpr.NmPrimVal', E10, E11} -> (fun (V23, V24) -> 1 end(E10, E11)); {'Idris.Core.CompileExpr.NmOp', E12, E13, E14, E15} -> (fun (V25, V26, V27, V28) -> (('Idris.Idris2.Prelude.Interfaces':'un--any'('erased', 'erased', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V29) -> fun (V30) -> fun (V31) -> fun (V32) -> fun (V33) -> ('Idris.Idris2.Data.Vect':'dn--un--foldr_Foldable__(Vect $n)'('erased', 'erased', 'erased', V31, V32, V33)) end end end end end, fun (V34) -> fun (V35) -> fun (V36) -> fun (V37) -> fun (V38) -> ('Idris.Idris2.Data.Vect':'dn--un--foldl_Foldable__(Vect $n)'('erased', 'erased', 'erased', V36, V37, V38)) end end end end end}, fun (V39) -> ('un--isNameUsed'(V0, V39)) end))(V28)) end(E12, E13, E14, E15)); {'Idris.Core.CompileExpr.NmConCase', E16, E17, E18, E19} -> (fun (V40, V41, V42, V43) -> ('Idris.Idris2.Prelude.Basics':'un--||'(('un--isNameUsed'(V0, V41)), fun () -> ('Idris.Idris2.Prelude.Basics':'un--||'((('Idris.Idris2.Prelude.Interfaces':'un--any'('erased', 'erased', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V44) -> fun (V45) -> fun (V46) -> fun (V47) -> fun (V48) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V46, V47, V48)) end end end end end, fun (V49) -> fun (V50) -> fun (V51) -> fun (V52) -> fun (V53) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V51, V52, V53)) end end end end end}, fun (V54) -> ('un--isNameUsedConAlt'(V0, V54)) end))(V42)), fun () -> ('Idris.Idris2.Prelude.Types':'un--maybe'('erased', 'erased', fun () -> 1 end, fun () -> fun (V55) -> ('un--isNameUsed'(V0, V55)) end end, V43)) end)) end)) end(E16, E17, E18, E19)); {'Idris.Core.CompileExpr.NmConstCase', E20, E21, E22, E23} -> (fun (V56, V57, V58, V59) -> ('Idris.Idris2.Prelude.Basics':'un--||'(('un--isNameUsed'(V0, V57)), fun () -> ('Idris.Idris2.Prelude.Basics':'un--||'((('Idris.Idris2.Prelude.Interfaces':'un--any'('erased', 'erased', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V60) -> fun (V61) -> fun (V62) -> fun (V63) -> fun (V64) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V62, V63, V64)) end end end end end, fun (V65) -> fun (V66) -> fun (V67) -> fun (V68) -> fun (V69) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V67, V68, V69)) end end end end end}, fun (V70) -> ('un--isNameUsedConstAlt'(V0, V70)) end))(V58)), fun () -> ('Idris.Idris2.Prelude.Types':'un--maybe'('erased', 'erased', fun () -> 1 end, fun () -> fun (V71) -> ('un--isNameUsed'(V0, V71)) end end, V59)) end)) end)) end(E20, E21, E22, E23)); {'Idris.Core.CompileExpr.NmExtPrim', E24, E25, E26} -> (fun (V72, V73, V74) -> (('Idris.Idris2.Prelude.Interfaces':'un--any'('erased', 'erased', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V75) -> fun (V76) -> fun (V77) -> fun (V78) -> fun (V79) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V77, V78, V79)) end end end end end, fun (V80) -> fun (V81) -> fun (V82) -> fun (V83) -> fun (V84) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V82, V83, V84)) end end end end end}, fun (V85) -> ('un--isNameUsed'(V0, V85)) end))(V74)) end(E24, E25, E26)); {'Idris.Core.CompileExpr.NmCon', E27, E28, E29, E30} -> (fun (V86, V87, V88, V89) -> (('Idris.Idris2.Prelude.Interfaces':'un--any'('erased', 'erased', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V90) -> fun (V91) -> fun (V92) -> fun (V93) -> fun (V94) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V92, V93, V94)) end end end end end, fun (V95) -> fun (V96) -> fun (V97) -> fun (V98) -> fun (V99) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V97, V98, V99)) end end end end end}, fun (V100) -> ('un--isNameUsed'(V0, V100)) end))(V89)) end(E27, E28, E29, E30)); {'Idris.Core.CompileExpr.NmDelay', E31, E32} -> (fun (V101, V102) -> ('un--isNameUsed'(V0, V102)) end(E31, E32)); {'Idris.Core.CompileExpr.NmForce', E33, E34} -> (fun (V103, V104) -> ('un--isNameUsed'(V0, V104)) end(E33, E34)); {'Idris.Core.CompileExpr.NmLet', E35, E36, E37, E38} -> (fun (V105, V106, V107, V108) -> ('case--isNameUsed-7544'(V108, V107, V106, V105, V0, ('Idris.Idris2.Core.Name':'dn--un--==_Eq__Name'(V106, V0)))) end(E35, E36, E37, E38)); {'Idris.Core.CompileExpr.NmErased', E39} -> (fun (V109) -> 1 end(E39)); {'Idris.Core.CompileExpr.NmCrash', E40, E41} -> (fun (V110, V111) -> 1 end(E40, E41)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--impVectExp'(V0, V1, V2, V3) -> begin (V5 = (('Idris.Idris2.Core.Core':'un--traverseVect'('erased', 'erased', 'erased', fun (V4) -> ('un--impExp'(V1, 1, V4)) end, V2))(V3))), case V5 of {'Idris.Prelude.Types.Left', E0} -> (fun (V6) -> {'Idris.Prelude.Types.Left', V6} end(E0)); {'Idris.Prelude.Types.Right', E1} -> (fun (V7) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', (('Idris.Idris2.Prelude.Interfaces':'un--concat'('erased', 'erased', {'Idris.Builtin.MkPair', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V9) -> fun (V10) -> fun (V11) -> fun (V12) -> fun (V13) -> ('Idris.Idris2.Data.Vect':'dn--un--foldr_Foldable__(Vect $n)'('erased', 'erased', 'erased', V11, V12, V13)) end end end end end, fun (V14) -> fun (V15) -> fun (V16) -> fun (V17) -> fun (V18) -> ('Idris.Idris2.Data.Vect':'dn--un--foldl_Foldable__(Vect $n)'('erased', 'erased', 'erased', V16, V17, V18)) end end end end end}, {'Idris.Prelude.Interfaces.dn--un--__mkMonoid', fun (V19) -> fun (V20) -> ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V19, V20)) end end, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--neutral_Monoid__ImperativeStatement'())}}))(('Idris.Idris2.Data.Vect':'dn--un--map_Functor__(Vect $n)'('erased', 'erased', 'erased', fun (V8) -> ('Idris.Idris2.Builtin':'un--fst'('erased', 'erased', V8)) end, V7)))), ('Idris.Idris2.Data.Vect':'dn--un--map_Functor__(Vect $n)'('erased', 'erased', 'erased', fun (V21) -> ('Idris.Idris2.Builtin':'un--snd'('erased', 'erased', V21)) end, V7))}} end(E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end.
'un--impTag'(V0, V1) -> case V1 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Core.Name':'dn--un--show_Show__Name'(V0))} end()); {'Idris.Prelude.Types.Just', E0} -> (fun (V2) -> {'Idris.Prelude.Types.Left', V2} end(E0)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--impListExp'(V0, V1, V2) -> begin (V4 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V3) -> ('un--impExp'(V0, 1, V3)) end, V1))(V2))), case V4 of {'Idris.Prelude.Types.Left', E0} -> (fun (V5) -> {'Idris.Prelude.Types.Left', V5} end(E0)); {'Idris.Prelude.Types.Right', E1} -> (fun (V6) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', (('Idris.Idris2.Prelude.Interfaces':'un--concat'('erased', 'erased', {'Idris.Builtin.MkPair', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V8) -> fun (V9) -> fun (V10) -> fun (V11) -> fun (V12) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V10, V11, V12)) end end end end end, fun (V13) -> fun (V14) -> fun (V15) -> fun (V16) -> fun (V17) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V15, V16, V17)) end end end end end}, {'Idris.Prelude.Interfaces.dn--un--__mkMonoid', fun (V18) -> fun (V19) -> ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V18, V19)) end end, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--neutral_Monoid__ImperativeStatement'())}}))(('Idris.Idris2.Prelude.Types':'dn--un--map_Functor__List'('erased', 'erased', fun (V7) -> ('Idris.Idris2.Builtin':'un--fst'('erased', 'erased', V7)) end, V6)))), ('Idris.Idris2.Prelude.Types':'dn--un--map_Functor__List'('erased', 'erased', fun (V20) -> ('Idris.Idris2.Builtin':'un--snd'('erased', 'erased', V20)) end, V6))}} end(E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end.
'un--impExp'(V0, V1, V2) -> case V2 of {'Idris.Core.CompileExpr.NmLocal', E190, E191} -> (fun (V3, V4) -> ('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IEVar', V4})) end(E190, E191)); {'Idris.Core.CompileExpr.NmRef', E192, E193} -> (fun (V5, V6) -> ('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IEVar', V6})) end(E192, E193)); {'Idris.Core.CompileExpr.NmLam', E194, E195, E196} -> (fun (V7, V8, V9) -> fun (V10) -> begin (V11 = (('un--impExp'(V0, 0, V9))(V10))), case V11 of {'Idris.Prelude.Types.Left', E197} -> (fun (V12) -> {'Idris.Prelude.Types.Left', V12} end(E197)); {'Idris.Prelude.Types.Right', E198} -> (fun (V13) -> (('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IELambda', [V8 | []], V13}))(V10)) end(E198)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E194, E195, E196)); {'Idris.Core.CompileExpr.NmApp', E199, E200, E201} -> (fun (V14, V15, V16) -> fun (V17) -> begin (V18 = (('un--impExp'(V0, 1, V15))(V17))), case V18 of {'Idris.Prelude.Types.Left', E202} -> (fun (V19) -> {'Idris.Prelude.Types.Left', V19} end(E202)); {'Idris.Prelude.Types.Right', E203} -> (fun (V20) -> case V20 of {'Idris.Builtin.MkPair', E204, E205} -> (fun (V21, V22) -> begin (V23 = ('un--impListExp'(V0, V16, V17))), case V23 of {'Idris.Prelude.Types.Left', E206} -> (fun (V24) -> {'Idris.Prelude.Types.Left', V24} end(E206)); {'Idris.Prelude.Types.Right', E207} -> (fun (V25) -> case V25 of {'Idris.Builtin.MkPair', E208, E209} -> (fun (V26, V27) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V21, V26)), {'Idris.Compiler.ES.ImperativeAst.IEApp', V22, V27}}))(V17)) end(E208, E209)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E207)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E204, E205)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E203)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E199, E200, E201)); {'Idris.Core.CompileExpr.NmPrimVal', E210, E211} -> (fun (V28, V29) -> ('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IEConstant', V29})) end(E210, E211)); {'Idris.Core.CompileExpr.NmOp', E212, E213, E214, E215} -> (fun (V30, V31, V32, V33) -> fun (V34) -> begin (V35 = ('un--impVectExp'('erased', V0, V33, V34))), case V35 of {'Idris.Prelude.Types.Left', E216} -> (fun (V36) -> {'Idris.Prelude.Types.Left', V36} end(E216)); {'Idris.Prelude.Types.Right', E217} -> (fun (V37) -> case V37 of {'Idris.Builtin.MkPair', E218, E219} -> (fun (V38, V39) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V38, {'Idris.Compiler.ES.ImperativeAst.IEPrimFn', V32, V39}}))(V34)) end(E218, E219)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E217)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E212, E213, E214, E215)); _ -> case V1 of 1 -> case V2 of {'Idris.Core.CompileExpr.NmConCase', E84, E85, E86, E87} -> (fun (V40, V41, V42, V43) -> fun (V44) -> begin (V45 = (('un--impExp'(V0, 1, V41))(V44))), case V45 of {'Idris.Prelude.Types.Left', E88} -> (fun (V46) -> {'Idris.Prelude.Types.Left', V46} end(E88)); {'Idris.Prelude.Types.Right', E89} -> (fun (V47) -> case V47 of {'Idris.Builtin.MkPair', E90, E91} -> (fun (V48, V49) -> begin (V50 = ('un--genName'(V0, V44))), case V50 of {'Idris.Prelude.Types.Left', E92} -> (fun (V51) -> {'Idris.Prelude.Types.Left', V51} end(E92)); {'Idris.Prelude.Types.Right', E93} -> (fun (V52) -> begin (V54 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V53) -> ('un--impConAlt'(V0, {'Idris.Prelude.Types.Just', V52}, V49, V53)) end, V42))(V44))), case V54 of {'Idris.Prelude.Types.Left', E94} -> (fun (V55) -> {'Idris.Prelude.Types.Left', V55} end(E94)); {'Idris.Prelude.Types.Right', E95} -> (fun (V56) -> begin (V63 = case V43 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled con case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V40))))}} end()); {'Idris.Prelude.Types.Just', E96} -> (fun (V57) -> begin (V58 = (('un--impExp'(V0, 1, V57))(V44))), case V58 of {'Idris.Prelude.Types.Left', E97} -> (fun (V59) -> {'Idris.Prelude.Types.Left', V59} end(E97)); {'Idris.Prelude.Types.Right', E98} -> (fun (V60) -> case V60 of {'Idris.Builtin.MkPair', E99, E100} -> (fun (V61, V62) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V61, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V52, V62}))} end(E99, E100)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E98)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E96)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V63 of {'Idris.Prelude.Types.Left', E101} -> (fun (V64) -> {'Idris.Prelude.Types.Left', V64} end(E101)); {'Idris.Prelude.Types.Right', E102} -> (fun (V65) -> begin (V66 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', {'Idris.Compiler.ES.ImperativeAst.IEConstructorHead', V49}, V56, {'Idris.Prelude.Types.Just', V65}}), {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V48, {'Idris.Compiler.ES.ImperativeAst.LetDecl', V52, {'Idris.Prelude.Types.Nothing'}})), V66)), {'Idris.Compiler.ES.ImperativeAst.IEVar', V52}}} end end(E102)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E95)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E93)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E90, E91)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E89)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E84, E85, E86, E87)); {'Idris.Core.CompileExpr.NmConstCase', E103, E104, E105, E106} -> (fun (V67, V68, V69, V70) -> fun (V71) -> begin (V72 = (('un--impExp'(V0, 1, V68))(V71))), case V72 of {'Idris.Prelude.Types.Left', E107} -> (fun (V73) -> {'Idris.Prelude.Types.Left', V73} end(E107)); {'Idris.Prelude.Types.Right', E108} -> (fun (V74) -> case V74 of {'Idris.Builtin.MkPair', E109, E110} -> (fun (V75, V76) -> begin (V77 = ('un--genName'(V0, V71))), case V77 of {'Idris.Prelude.Types.Left', E111} -> (fun (V78) -> {'Idris.Prelude.Types.Left', V78} end(E111)); {'Idris.Prelude.Types.Right', E112} -> (fun (V79) -> begin (V81 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V80) -> ('un--impConstAlt'(V0, {'Idris.Prelude.Types.Just', V79}, V80)) end, V69))(V71))), case V81 of {'Idris.Prelude.Types.Left', E113} -> (fun (V82) -> {'Idris.Prelude.Types.Left', V82} end(E113)); {'Idris.Prelude.Types.Right', E114} -> (fun (V83) -> begin (V90 = case V70 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled const case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V67))))}} end()); {'Idris.Prelude.Types.Just', E115} -> (fun (V84) -> begin (V85 = (('un--impExp'(V0, 1, V84))(V71))), case V85 of {'Idris.Prelude.Types.Left', E116} -> (fun (V86) -> {'Idris.Prelude.Types.Left', V86} end(E116)); {'Idris.Prelude.Types.Right', E117} -> (fun (V87) -> case V87 of {'Idris.Builtin.MkPair', E118, E119} -> (fun (V88, V89) -> {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V88, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V79, V89}))} end(E118, E119)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E117)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E115)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V90 of {'Idris.Prelude.Types.Left', E120} -> (fun (V91) -> {'Idris.Prelude.Types.Left', V91} end(E120)); {'Idris.Prelude.Types.Right', E121} -> (fun (V92) -> begin (V93 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', V76, V83, {'Idris.Prelude.Types.Just', V92}}), {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V75, {'Idris.Compiler.ES.ImperativeAst.LetDecl', V79, {'Idris.Prelude.Types.Nothing'}})), V93)), {'Idris.Compiler.ES.ImperativeAst.IEVar', V79}}} end end(E121)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E114)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E112)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E109, E110)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E108)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E103, E104, E105, E106)); _ -> case V2 of {'Idris.Core.CompileExpr.NmExtPrim', E42, E43, E44} -> (fun (V94, V95, V96) -> fun (V97) -> begin (V98 = ('un--impListExp'(V0, V96, V97))), case V98 of {'Idris.Prelude.Types.Left', E45} -> (fun (V99) -> {'Idris.Prelude.Types.Left', V99} end(E45)); {'Idris.Prelude.Types.Right', E46} -> (fun (V100) -> case V100 of {'Idris.Builtin.MkPair', E47, E48} -> (fun (V101, V102) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V101, {'Idris.Compiler.ES.ImperativeAst.IEPrimFnExt', V95, V102}}))(V97)) end(E47, E48)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E46)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E42, E43, E44)); {'Idris.Core.CompileExpr.NmCon', E49, E50, E51, E52} -> (fun (V103, V104, V105, V106) -> fun (V107) -> begin (V108 = ('un--impListExp'(V0, V106, V107))), case V108 of {'Idris.Prelude.Types.Left', E53} -> (fun (V109) -> {'Idris.Prelude.Types.Left', V109} end(E53)); {'Idris.Prelude.Types.Right', E54} -> (fun (V110) -> case V110 of {'Idris.Builtin.MkPair', E55, E56} -> (fun (V111, V112) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V111, {'Idris.Compiler.ES.ImperativeAst.IEConstructor', ('un--impTag'(V104, V105)), V112}}))(V107)) end(E55, E56)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E54)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E49, E50, E51, E52)); {'Idris.Core.CompileExpr.NmDelay', E57, E58} -> (fun (V113, V114) -> fun (V115) -> begin (V116 = (('un--impExp'(V0, 1, V114))(V115))), case V116 of {'Idris.Prelude.Types.Left', E59} -> (fun (V117) -> {'Idris.Prelude.Types.Left', V117} end(E59)); {'Idris.Prelude.Types.Right', E60} -> (fun (V118) -> case V118 of {'Idris.Builtin.MkPair', E61, E62} -> (fun (V119, V120) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V119, {'Idris.Compiler.ES.ImperativeAst.IEDelay', V120}}))(V115)) end(E61, E62)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E60)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E57, E58)); {'Idris.Core.CompileExpr.NmForce', E63, E64} -> (fun (V121, V122) -> fun (V123) -> begin (V124 = (('un--impExp'(V0, 1, V122))(V123))), case V124 of {'Idris.Prelude.Types.Left', E65} -> (fun (V125) -> {'Idris.Prelude.Types.Left', V125} end(E65)); {'Idris.Prelude.Types.Right', E66} -> (fun (V126) -> case V126 of {'Idris.Builtin.MkPair', E67, E68} -> (fun (V127, V128) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V127, {'Idris.Compiler.ES.ImperativeAst.IEForce', V128}}))(V123)) end(E67, E68)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E66)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E63, E64)); {'Idris.Core.CompileExpr.NmLet', E69, E70, E71, E72} -> (fun (V129, V130, V131, V132) -> fun (V133) -> begin (V134 = (('un--impExp'(V0, 1, V131))(V133))), case V134 of {'Idris.Prelude.Types.Left', E73} -> (fun (V135) -> {'Idris.Prelude.Types.Left', V135} end(E73)); {'Idris.Prelude.Types.Right', E74} -> (fun (V136) -> case V136 of {'Idris.Builtin.MkPair', E75, E76} -> (fun (V137, V138) -> begin (V139 = (('un--impExp'(V0, 1, V132))(V133))), case V139 of {'Idris.Prelude.Types.Left', E77} -> (fun (V140) -> {'Idris.Prelude.Types.Left', V140} end(E77)); {'Idris.Prelude.Types.Right', E78} -> (fun (V141) -> begin (V142 = {'Idris.Builtin.MkPair', V137, V138}), case V141 of {'Idris.Builtin.MkPair', E79, E80} -> (fun (V143, V144) -> begin (V146 = begin (V145 = {'Idris.Builtin.MkPair', V143, V144}), ('case--case block in case block in impExp-8568'(V132, V131, V130, V129, V1, V0, V137, V138, V142, V143, V144, V145, ('un--isNameUsed'(V130, V132)))) end), (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V137, V146)), V143)), V144}))(V133)) end end(E79, E80)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E78)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E75, E76)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E74)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E69, E70, E71, E72)); {'Idris.Core.CompileExpr.NmErased', E81} -> (fun (V147) -> ('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IENull'})) end(E81)); {'Idris.Core.CompileExpr.NmCrash', E82, E83} -> (fun (V148, V149) -> ('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', V149}, {'Idris.Compiler.ES.ImperativeAst.IENull'}})) end(E82, E83)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end; 0 -> case V2 of {'Idris.Core.CompileExpr.NmConCase', E164, E165, E166, E167} -> (fun (V150, V151, V152, V153) -> fun (V154) -> begin (V155 = (('un--impExp'(V0, 1, V151))(V154))), case V155 of {'Idris.Prelude.Types.Left', E168} -> (fun (V156) -> {'Idris.Prelude.Types.Left', V156} end(E168)); {'Idris.Prelude.Types.Right', E169} -> (fun (V157) -> case V157 of {'Idris.Builtin.MkPair', E170, E171} -> (fun (V158, V159) -> begin (V161 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V160) -> ('un--impConAlt'(V0, {'Idris.Prelude.Types.Nothing'}, V159, V160)) end, V152))(V154))), case V161 of {'Idris.Prelude.Types.Left', E172} -> (fun (V162) -> {'Idris.Prelude.Types.Left', V162} end(E172)); {'Idris.Prelude.Types.Right', E173} -> (fun (V163) -> begin (V165 = case V153 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled con case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V150))))}} end()); {'Idris.Prelude.Types.Just', E174} -> (fun (V164) -> (('un--impExp'(V0, 0, V164))(V154)) end(E174)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V165 of {'Idris.Prelude.Types.Left', E175} -> (fun (V166) -> {'Idris.Prelude.Types.Left', V166} end(E175)); {'Idris.Prelude.Types.Right', E176} -> (fun (V167) -> begin (V168 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', {'Idris.Compiler.ES.ImperativeAst.IEConstructorHead', V159}, V163, {'Idris.Prelude.Types.Just', V167}}), {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V158, V168))} end end(E176)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E173)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E170, E171)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E169)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E164, E165, E166, E167)); {'Idris.Core.CompileExpr.NmConstCase', E177, E178, E179, E180} -> (fun (V169, V170, V171, V172) -> fun (V173) -> begin (V174 = (('un--impExp'(V0, 1, V170))(V173))), case V174 of {'Idris.Prelude.Types.Left', E181} -> (fun (V175) -> {'Idris.Prelude.Types.Left', V175} end(E181)); {'Idris.Prelude.Types.Right', E182} -> (fun (V176) -> case V176 of {'Idris.Builtin.MkPair', E183, E184} -> (fun (V177, V178) -> begin (V180 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V179) -> ('un--impConstAlt'(V0, {'Idris.Prelude.Types.Nothing'}, V179)) end, V171))(V173))), case V180 of {'Idris.Prelude.Types.Left', E185} -> (fun (V181) -> {'Idris.Prelude.Types.Left', V181} end(E185)); {'Idris.Prelude.Types.Right', E186} -> (fun (V182) -> begin (V184 = case V172 of {'Idris.Prelude.Types.Nothing'} -> (fun () -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', ('Idris.Idris2.Prelude.Types.Strings':'un--++'(<<"unhandled const case on "/utf8>>, ('Idris.Idris2.Core.FC':'dn--un--show_Show__FC'(V169))))}} end()); {'Idris.Prelude.Types.Just', E187} -> (fun (V183) -> (('un--impExp'(V0, 0, V183))(V173)) end(E187)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), case V184 of {'Idris.Prelude.Types.Left', E188} -> (fun (V185) -> {'Idris.Prelude.Types.Left', V185} end(E188)); {'Idris.Prelude.Types.Right', E189} -> (fun (V186) -> begin (V187 = {'Idris.Compiler.ES.ImperativeAst.SwitchStatement', V178, V182, {'Idris.Prelude.Types.Just', V186}}), {'Idris.Prelude.Types.Right', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V177, V187))} end end(E189)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E186)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E183, E184)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E182)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E177, E178, E179, E180)); _ -> case V2 of {'Idris.Core.CompileExpr.NmExtPrim', E122, E123, E124} -> (fun (V188, V189, V190) -> fun (V191) -> begin (V192 = ('un--impListExp'(V0, V190, V191))), case V192 of {'Idris.Prelude.Types.Left', E125} -> (fun (V193) -> {'Idris.Prelude.Types.Left', V193} end(E125)); {'Idris.Prelude.Types.Right', E126} -> (fun (V194) -> case V194 of {'Idris.Builtin.MkPair', E127, E128} -> (fun (V195, V196) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V195, {'Idris.Compiler.ES.ImperativeAst.IEPrimFnExt', V189, V196}}))(V191)) end(E127, E128)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E126)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E122, E123, E124)); {'Idris.Core.CompileExpr.NmCon', E129, E130, E131, E132} -> (fun (V197, V198, V199, V200) -> fun (V201) -> begin (V202 = ('un--impListExp'(V0, V200, V201))), case V202 of {'Idris.Prelude.Types.Left', E133} -> (fun (V203) -> {'Idris.Prelude.Types.Left', V203} end(E133)); {'Idris.Prelude.Types.Right', E134} -> (fun (V204) -> case V204 of {'Idris.Builtin.MkPair', E135, E136} -> (fun (V205, V206) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V205, {'Idris.Compiler.ES.ImperativeAst.IEConstructor', ('un--impTag'(V198, V199)), V206}}))(V201)) end(E135, E136)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E134)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E129, E130, E131, E132)); {'Idris.Core.CompileExpr.NmDelay', E137, E138} -> (fun (V207, V208) -> fun (V209) -> begin (V210 = (('un--impExp'(V0, 1, V208))(V209))), case V210 of {'Idris.Prelude.Types.Left', E139} -> (fun (V211) -> {'Idris.Prelude.Types.Left', V211} end(E139)); {'Idris.Prelude.Types.Right', E140} -> (fun (V212) -> case V212 of {'Idris.Builtin.MkPair', E141, E142} -> (fun (V213, V214) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V213, {'Idris.Compiler.ES.ImperativeAst.IEDelay', V214}}))(V209)) end(E141, E142)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E140)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E137, E138)); {'Idris.Core.CompileExpr.NmForce', E143, E144} -> (fun (V215, V216) -> fun (V217) -> begin (V218 = (('un--impExp'(V0, 1, V216))(V217))), case V218 of {'Idris.Prelude.Types.Left', E145} -> (fun (V219) -> {'Idris.Prelude.Types.Left', V219} end(E145)); {'Idris.Prelude.Types.Right', E146} -> (fun (V220) -> case V220 of {'Idris.Builtin.MkPair', E147, E148} -> (fun (V221, V222) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V221, {'Idris.Compiler.ES.ImperativeAst.IEForce', V222}}))(V217)) end(E147, E148)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E146)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E143, E144)); {'Idris.Core.CompileExpr.NmLet', E149, E150, E151, E152} -> (fun (V223, V224, V225, V226) -> fun (V227) -> begin (V228 = (('un--impExp'(V0, 1, V225))(V227))), case V228 of {'Idris.Prelude.Types.Left', E153} -> (fun (V229) -> {'Idris.Prelude.Types.Left', V229} end(E153)); {'Idris.Prelude.Types.Right', E154} -> (fun (V230) -> case V230 of {'Idris.Builtin.MkPair', E155, E156} -> (fun (V231, V232) -> begin (V233 = (('un--impExp'(V0, 1, V226))(V227))), case V233 of {'Idris.Prelude.Types.Left', E157} -> (fun (V234) -> {'Idris.Prelude.Types.Left', V234} end(E157)); {'Idris.Prelude.Types.Right', E158} -> (fun (V235) -> begin (V236 = {'Idris.Builtin.MkPair', V231, V232}), case V235 of {'Idris.Builtin.MkPair', E159, E160} -> (fun (V237, V238) -> begin (V240 = begin (V239 = {'Idris.Builtin.MkPair', V237, V238}), ('case--case block in case block in impExp-8568'(V226, V225, V224, V223, V1, V0, V231, V232, V236, V237, V238, V239, ('un--isNameUsed'(V224, V226)))) end), (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V231, V240)), V237)), V238}))(V227)) end end(E159, E160)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E158)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E155, E156)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E154)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E149, E150, E151, E152)); {'Idris.Core.CompileExpr.NmErased', E161} -> (fun (V241) -> ('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IENull'})) end(E161)); {'Idris.Core.CompileExpr.NmCrash', E162, E163} -> (fun (V242, V243) -> ('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', V243}, {'Idris.Compiler.ES.ImperativeAst.IENull'}})) end(E162, E163)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end; _ -> case V2 of {'Idris.Core.CompileExpr.NmExtPrim', E0, E1, E2} -> (fun (V244, V245, V246) -> fun (V247) -> begin (V248 = ('un--impListExp'(V0, V246, V247))), case V248 of {'Idris.Prelude.Types.Left', E3} -> (fun (V249) -> {'Idris.Prelude.Types.Left', V249} end(E3)); {'Idris.Prelude.Types.Right', E4} -> (fun (V250) -> case V250 of {'Idris.Builtin.MkPair', E5, E6} -> (fun (V251, V252) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V251, {'Idris.Compiler.ES.ImperativeAst.IEPrimFnExt', V245, V252}}))(V247)) end(E5, E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E0, E1, E2)); {'Idris.Core.CompileExpr.NmCon', E7, E8, E9, E10} -> (fun (V253, V254, V255, V256) -> fun (V257) -> begin (V258 = ('un--impListExp'(V0, V256, V257))), case V258 of {'Idris.Prelude.Types.Left', E11} -> (fun (V259) -> {'Idris.Prelude.Types.Left', V259} end(E11)); {'Idris.Prelude.Types.Right', E12} -> (fun (V260) -> case V260 of {'Idris.Builtin.MkPair', E13, E14} -> (fun (V261, V262) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V261, {'Idris.Compiler.ES.ImperativeAst.IEConstructor', ('un--impTag'(V254, V255)), V262}}))(V257)) end(E13, E14)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E12)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E7, E8, E9, E10)); {'Idris.Core.CompileExpr.NmDelay', E15, E16} -> (fun (V263, V264) -> fun (V265) -> begin (V266 = (('un--impExp'(V0, 1, V264))(V265))), case V266 of {'Idris.Prelude.Types.Left', E17} -> (fun (V267) -> {'Idris.Prelude.Types.Left', V267} end(E17)); {'Idris.Prelude.Types.Right', E18} -> (fun (V268) -> case V268 of {'Idris.Builtin.MkPair', E19, E20} -> (fun (V269, V270) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V269, {'Idris.Compiler.ES.ImperativeAst.IEDelay', V270}}))(V265)) end(E19, E20)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E18)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E15, E16)); {'Idris.Core.CompileExpr.NmForce', E21, E22} -> (fun (V271, V272) -> fun (V273) -> begin (V274 = (('un--impExp'(V0, 1, V272))(V273))), case V274 of {'Idris.Prelude.Types.Left', E23} -> (fun (V275) -> {'Idris.Prelude.Types.Left', V275} end(E23)); {'Idris.Prelude.Types.Right', E24} -> (fun (V276) -> case V276 of {'Idris.Builtin.MkPair', E25, E26} -> (fun (V277, V278) -> (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', V277, {'Idris.Compiler.ES.ImperativeAst.IEForce', V278}}))(V273)) end(E25, E26)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E24)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E21, E22)); {'Idris.Core.CompileExpr.NmLet', E27, E28, E29, E30} -> (fun (V279, V280, V281, V282) -> fun (V283) -> begin (V284 = (('un--impExp'(V0, 1, V281))(V283))), case V284 of {'Idris.Prelude.Types.Left', E31} -> (fun (V285) -> {'Idris.Prelude.Types.Left', V285} end(E31)); {'Idris.Prelude.Types.Right', E32} -> (fun (V286) -> case V286 of {'Idris.Builtin.MkPair', E33, E34} -> (fun (V287, V288) -> begin (V289 = (('un--impExp'(V0, 1, V282))(V283))), case V289 of {'Idris.Prelude.Types.Left', E35} -> (fun (V290) -> {'Idris.Prelude.Types.Left', V290} end(E35)); {'Idris.Prelude.Types.Right', E36} -> (fun (V291) -> begin (V292 = {'Idris.Builtin.MkPair', V287, V288}), case V291 of {'Idris.Builtin.MkPair', E37, E38} -> (fun (V293, V294) -> begin (V296 = begin (V295 = {'Idris.Builtin.MkPair', V293, V294}), ('case--case block in case block in impExp-8568'(V282, V281, V280, V279, V1, V0, V287, V288, V292, V293, V294, V295, ('un--isNameUsed'(V280, V282)))) end), (('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V287, V296)), V293)), V294}))(V283)) end end(E37, E38)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E36)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E33, E34)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E32)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E27, E28, E29, E30)); {'Idris.Core.CompileExpr.NmErased', E39} -> (fun (V297) -> ('un--expToReturn'(V1, {'Idris.Compiler.ES.ImperativeAst.IENull'})) end(E39)); {'Idris.Core.CompileExpr.NmCrash', E40, E41} -> (fun (V298, V299) -> ('un--pairToReturn'(V1, {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.ErrorStatement', V299}, {'Idris.Compiler.ES.ImperativeAst.IENull'}})) end(E40, E41)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end.
'un--impConstAlt'(V0, V1, V2) -> case V1 of {'Idris.Prelude.Types.Just', E0} -> (fun (V3) -> case V2 of {'Idris.Core.CompileExpr.MkNConstAlt', E1, E2} -> (fun (V4, V5) -> fun (V6) -> begin (V7 = (('un--impExp'(V0, 1, V5))(V6))), case V7 of {'Idris.Prelude.Types.Left', E3} -> (fun (V8) -> {'Idris.Prelude.Types.Left', V8} end(E3)); {'Idris.Prelude.Types.Right', E4} -> (fun (V9) -> case V9 of {'Idris.Builtin.MkPair', E5, E6} -> (fun (V10, V11) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstant', V4}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V10, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V3, V11}))}} end(E5, E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E1, E2)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E0)); {'Idris.Prelude.Types.Nothing'} -> (fun () -> case V2 of {'Idris.Core.CompileExpr.MkNConstAlt', E7, E8} -> (fun (V12, V13) -> fun (V14) -> begin (V15 = (('un--impExp'(V0, 1, V13))(V14))), case V15 of {'Idris.Prelude.Types.Left', E9} -> (fun (V16) -> {'Idris.Prelude.Types.Left', V16} end(E9)); {'Idris.Prelude.Types.Right', E10} -> (fun (V17) -> case V17 of {'Idris.Builtin.MkPair', E11, E12} -> (fun (V18, V19) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstant', V12}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V18, {'Idris.Compiler.ES.ImperativeAst.ReturnStatement', V19}))}} end(E11, E12)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E10)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E7, E8)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end()); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--impConAlt'(V0, V1, V2, V3) -> case V1 of {'Idris.Prelude.Types.Just', E0} -> (fun (V4) -> case V3 of {'Idris.Core.CompileExpr.MkNConAlt', E1, E2, E3, E4} -> (fun (V5, V6, V7, V8) -> fun (V9) -> begin (V10 = (('un--impExp'(V0, 1, V8))(V9))), case V10 of {'Idris.Prelude.Types.Left', E5} -> (fun (V11) -> {'Idris.Prelude.Types.Left', V11} end(E5)); {'Idris.Prelude.Types.Right', E6} -> (fun (V12) -> case V12 of {'Idris.Builtin.MkPair', E7, E8} -> (fun (V13, V14) -> begin (V15 = ('Idris.Idris2.Prelude.Types.List':'un--length'('erased', V7))), begin (V18 = ('Idris.Idris2.Data.List':'un--zipWith'('erased', 'erased', 'erased', fun (V16) -> fun (V17) -> {'Idris.Builtin.MkPair', V17, {'Idris.Compiler.ES.ImperativeAst.IEConstructorArg', ('Idris.Idris2.Prelude.Types':'dn--un--cast_Cast__Nat_Int'(V16)), V2}} end end, ('Idris.Idris2.Prelude.Types':'dn--un--rangeFromTo_Range__Nat'((1 + 0), V15)), V7))), {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstructorTag', ('un--impTag'(V5, V6))}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'un--replaceNamesExpS'(V18, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V13, {'Idris.Compiler.ES.ImperativeAst.MutateStatement', V4, V14}))))}} end end end(E7, E8)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E1, E2, E3, E4)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E0)); {'Idris.Prelude.Types.Nothing'} -> (fun () -> case V3 of {'Idris.Core.CompileExpr.MkNConAlt', E9, E10, E11, E12} -> (fun (V19, V20, V21, V22) -> fun (V23) -> begin (V24 = (('un--impExp'(V0, 1, V22))(V23))), case V24 of {'Idris.Prelude.Types.Left', E13} -> (fun (V25) -> {'Idris.Prelude.Types.Left', V25} end(E13)); {'Idris.Prelude.Types.Right', E14} -> (fun (V26) -> case V26 of {'Idris.Builtin.MkPair', E15, E16} -> (fun (V27, V28) -> begin (V29 = ('Idris.Idris2.Prelude.Types.List':'un--length'('erased', V21))), begin (V32 = ('Idris.Idris2.Data.List':'un--zipWith'('erased', 'erased', 'erased', fun (V30) -> fun (V31) -> {'Idris.Builtin.MkPair', V31, {'Idris.Compiler.ES.ImperativeAst.IEConstructorArg', ('Idris.Idris2.Prelude.Types':'dn--un--cast_Cast__Nat_Int'(V30)), V2}} end end, ('Idris.Idris2.Prelude.Types':'dn--un--rangeFromTo_Range__Nat'((1 + 0), V29)), V21))), {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.IEConstructorTag', ('un--impTag'(V19, V20))}, ('Idris.Idris2.Compiler.ES.ImperativeAst':'un--replaceNamesExpS'(V32, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V27, {'Idris.Compiler.ES.ImperativeAst.ReturnStatement', V28}))))}} end end end(E15, E16)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E14)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E9, E10, E11, E12)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end()); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--getImp'(V0, V1) -> case V1 of {'Idris.Builtin.MkPair', E0, E1} -> (fun (V2, V3) -> case V3 of {'Idris.Builtin.MkPair', E2, E3} -> (fun (V4, V5) -> case V5 of {'Idris.Core.CompileExpr.MkNmFun', E4, E5} -> (fun (V6, V7) -> fun (V8) -> begin (V9 = (('un--impExp'(V0, 0, V7))(V8))), case V9 of {'Idris.Prelude.Types.Left', E6} -> (fun (V10) -> {'Idris.Prelude.Types.Left', V10} end(E6)); {'Idris.Prelude.Types.Right', E7} -> (fun (V11) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.FunDecl', V4, V2, V6, V11}} end(E7)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E4, E5)); {'Idris.Core.CompileExpr.MkNmError', E8} -> (fun (V12) -> fun (V13) -> ('Idris.Idris2.Core.Core':'dn--un--throw_Catchable__Core_Error'('erased', {'Idris.Core.Core.InternalError', ('Idris.Idris2.Core.CompileExpr':'dn--un--show_Show__NamedCExp'(V12))}, V13)) end end(E8)); {'Idris.Core.CompileExpr.MkNmForeign', E9, E10, E11} -> (fun (V14, V15, V16) -> fun (V17) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ForeignDecl', V4, V2, V14, V15, V16}} end end(E9, E10, E11)); {'Idris.Core.CompileExpr.MkNmCon', E12, E13, E14} -> (fun (V18, V19, V20) -> fun (V21) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.DoNothing'}} end end(E12, E13, E14)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E2, E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E0, E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--genName'(V0, V1) -> begin (V30 = begin (V29 = (('Idris.Idris2.Erlang.Data.IORef':'un--readIORef'('erased', 'erased', {'Idris.Prelude.IO.dn--un--__mkHasIO', {'Idris.Prelude.Interfaces.dn--un--__mkMonad', {'Idris.Prelude.Interfaces.dn--un--__mkApplicative', fun (V2) -> fun (V3) -> fun (V4) -> fun (V5) -> fun (V6) -> ('Idris.Idris2.Prelude.IO':'dn--un--map_Functor__IO'('erased', 'erased', V4, V5, V6)) end end end end end, fun (V7) -> fun (V8) -> fun (V9) -> V8 end end end, fun (V10) -> fun (V11) -> fun (V12) -> fun (V13) -> fun (V14) -> begin (V15 = (V12(V14))), begin (V16 = (V13(V14))), (V15(V16)) end end end end end end end}, fun (V17) -> fun (V18) -> fun (V19) -> fun (V20) -> fun (V21) -> begin (V22 = (V19(V21))), ((V20(V22))(V21)) end end end end end end, fun (V23) -> fun (V24) -> fun (V25) -> begin (V26 = (V24(V25))), (V26(V25)) end end end end}, fun (V27) -> fun (V28) -> V28 end end}, V0))(V1))), {'Idris.Prelude.Types.Right', V29} end), case V30 of {'Idris.Prelude.Types.Left', E0} -> (fun (V31) -> {'Idris.Prelude.Types.Left', V31} end(E0)); {'Idris.Prelude.Types.Right', E1} -> (fun (V32) -> begin (V33 = V32), begin (V62 = begin (V61 = (('Idris.Idris2.Erlang.Data.IORef':'un--writeIORef'('erased', 'erased', {'Idris.Prelude.IO.dn--un--__mkHasIO', {'Idris.Prelude.Interfaces.dn--un--__mkMonad', {'Idris.Prelude.Interfaces.dn--un--__mkApplicative', fun (V34) -> fun (V35) -> fun (V36) -> fun (V37) -> fun (V38) -> ('Idris.Idris2.Prelude.IO':'dn--un--map_Functor__IO'('erased', 'erased', V36, V37, V38)) end end end end end, fun (V39) -> fun (V40) -> fun (V41) -> V40 end end end, fun (V42) -> fun (V43) -> fun (V44) -> fun (V45) -> fun (V46) -> begin (V47 = (V44(V46))), begin (V48 = (V45(V46))), (V47(V48)) end end end end end end end}, fun (V49) -> fun (V50) -> fun (V51) -> fun (V52) -> fun (V53) -> begin (V54 = (V51(V53))), ((V52(V54))(V53)) end end end end end end, fun (V55) -> fun (V56) -> fun (V57) -> begin (V58 = (V56(V57))), (V58(V57)) end end end end}, fun (V59) -> fun (V60) -> V60 end end}, V0, ((V33 + 1) rem 9223372036854775808)))(V1))), {'Idris.Prelude.Types.Right', V61} end), case V62 of {'Idris.Prelude.Types.Left', E2} -> (fun (V63) -> {'Idris.Prelude.Types.Left', V63} end(E2)); {'Idris.Prelude.Types.Right', E3} -> (fun (V64) -> {'Idris.Prelude.Types.Right', {'Idris.Core.Name.MN', <<"imp_gen"/utf8>>, V33}} end(E3)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end(E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end.
'un--expToReturn'(V0, V1) -> case V0 of 1 -> fun (V2) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', {'Idris.Compiler.ES.ImperativeAst.DoNothing'}, V1}} end; 0 -> fun (V3) -> {'Idris.Prelude.Types.Right', {'Idris.Compiler.ES.ImperativeAst.ReturnStatement', V1}} end; _ -> ('erlang':'throw'("Error: Unreachable branch")) end.
'un--compileToImperative'(V0, V1, V2) -> begin (V3 = ('Idris.Idris2.Compiler.Common':'un--getCompileData'(V0, {'Idris.Compiler.Common.Cases'}, V1, V2))), case V3 of {'Idris.Prelude.Types.Left', E0} -> (fun (V4) -> {'Idris.Prelude.Types.Left', V4} end(E0)); {'Idris.Prelude.Types.Right', E1} -> (fun (V5) -> begin (V11 = case V5 of {'Idris.Compiler.Common.MkCompileData', E2, E3, E4, E5, E6} -> (fun (V6, V7, V8, V9, V10) -> V7 end(E2, E3, E4, E5, E6)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end), begin (V17 = ('Idris.Idris2.Core.CompileExpr':'un--forget'([], case V5 of {'Idris.Compiler.Common.MkCompileData', E7, E8, E9, E10, E11} -> (fun (V12, V13, V14, V15, V16) -> V12 end(E7, E8, E9, E10, E11)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end))), begin (V18 = ('Idris.Idris2.Core.Core':'un--newRef'('erased', 'erased', {'Idris.Compiler.ES.Imperative.Imps'}, 0, V2))), case V18 of {'Idris.Prelude.Types.Left', E12} -> (fun (V19) -> {'Idris.Prelude.Types.Left', V19} end(E12)); {'Idris.Prelude.Types.Right', E13} -> (fun (V20) -> begin (V22 = (('Idris.Idris2.Core.Core':'un--traverse'('erased', 'erased', fun (V21) -> ('un--getImp'(V20, V21)) end, ('Idris.Idris2.Compiler.ES.RemoveUnused':'un--defsUsedByNamedCExp'(V17, V11))))(V2))), case V22 of {'Idris.Prelude.Types.Left', E14} -> (fun (V23) -> {'Idris.Prelude.Types.Left', V23} end(E14)); {'Idris.Prelude.Types.Right', E15} -> (fun (V24) -> begin (V37 = (('Idris.Idris2.Prelude.Interfaces':'un--concat'('erased', 'erased', {'Idris.Builtin.MkPair', {'Idris.Prelude.Interfaces.dn--un--__mkFoldable', fun (V25) -> fun (V26) -> fun (V27) -> fun (V28) -> fun (V29) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldr_Foldable__List'('erased', 'erased', V27, V28, V29)) end end end end end, fun (V30) -> fun (V31) -> fun (V32) -> fun (V33) -> fun (V34) -> ('Idris.Idris2.Prelude.Types':'dn--un--foldl_Foldable__List'('erased', 'erased', V32, V33, V34)) end end end end end}, {'Idris.Prelude.Interfaces.dn--un--__mkMonoid', fun (V35) -> fun (V36) -> ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V35, V36)) end end, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--neutral_Monoid__ImperativeStatement'())}}))(V24))), begin (V38 = ('Idris.Idris2.Compiler.ES.TailRec':'un--tailRecOptim'(V37))), begin (V39 = (('un--impExp'(V20, 1, V17))(V2))), case V39 of {'Idris.Prelude.Types.Left', E16} -> (fun (V40) -> {'Idris.Prelude.Types.Left', V40} end(E16)); {'Idris.Prelude.Types.Right', E17} -> (fun (V41) -> case V41 of {'Idris.Builtin.MkPair', E18, E19} -> (fun (V42, V43) -> {'Idris.Prelude.Types.Right', {'Idris.Builtin.MkPair', V38, ('Idris.Idris2.Compiler.ES.ImperativeAst':'dn--un--<+>_Semigroup__ImperativeStatement'(V42, {'Idris.Compiler.ES.ImperativeAst.EvalExpStatement', V43}))}} end(E18, E19)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end(E17)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end end(E15)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end(E13)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end end end end(E1)); _ -> ('erlang':'throw'("Error: Unreachable branch")) end end.