(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Name CALLABLE_LAMBDA_SH> suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<true>}) ) } {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<declare>} {<-g>} {<Id.Lit_VarLike 'CALLABLE_LAMBDA_SH='> <true>}) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/common.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/variables.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/variables.linkedlist.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/specialforms.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/evaluator.sh'> } ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/callable.sh'> } ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <define> } {<Lambda>} {<Function>} ) (command.ShFunction name: 'variable::Lambda::new' body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name VARIABLES_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'variable::Lambda::new '> (${ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] spids: [170 185] ) ] ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Lambda>} {(DQ (${ Id.VSub_At '@'))} ) ] ) ) (command.ShFunction name: 'variable::Lambda::call' body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name VARIABLES_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'variable::Lambda::call '> (${ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] spids: [247 262] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))}) (C {<declare>} {<Id.Lit_VarLike 'passedArgs='> (DQ (${ Id.VSub_Number 2))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOfOrExit> } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>} ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {($ Id.VSub_DollarName '$passedArgs')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'passedArgCount='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getEnv> } {($ Id.VSub_DollarName '$lambdaToken')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getFormalArgs> } {($ Id.VSub_DollarName '$lambdaToken')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'formalArgs='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getBody> } {($ Id.VSub_DollarName '$lambdaToken')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'body='> (DQ (${ Id.VSub_Name RESULT))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <length> } {($ Id.VSub_DollarName '$formalArgs')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'formalArgCount='> (DQ (${ Id.VSub_Name RESULT))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ne left: {($ Id.VSub_DollarName '$passedArgCount')} right: {($ Id.VSub_DollarName '$formalArgCount')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<stderr>} { (DQ <'lambda: passed arg count ('> (${ Id.VSub_Name passedArgCount) <') != format arg count ('> (${ Id.VSub_Name formalArgCount) <')'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [427 440] ) ] ) (command.Sentence child: (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <pushScope>} {($ Id.VSub_DollarName '$env')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'runningEnv='> (DQ (${ Id.VSub_Name RESULT))}) (C {<declare>} {<thisKeyToken>}) (C {<declare>} {<thisValueToken>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name formalArgs))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name formalArgs))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:thisKeyToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [535] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name passedArgs))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:thisValueToken) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [559] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name formalArgs))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:formalArgs) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [584] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name passedArgs))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:passedArgs) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [608] ) ] ) (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setVariable>} {(DQ (${ Id.VSub_Name runningEnv))} {($ Id.VSub_DollarName '$thisKeyToken')} {($ Id.VSub_DollarName '$thisValueToken')} ) ] ) ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} {($ Id.VSub_DollarName '$body')} ) (C {<declare>} {<currentSexp>} {<currentResult>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c> } {(DQ (${ Id.VSub_Name body))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first> } {(DQ (${ Id.VSub_Name body))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentSexp) op: assign_op.Equal rhs: {(${ Id.VSub_Name RESULT)} spids: [692] ) ] ) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest> } {(DQ (${ Id.VSub_Name body))} ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:body) op: assign_op.Equal rhs: {(${ Id.VSub_Name RESULT)} spids: [714] ) ] ) (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {($ Id.VSub_DollarName '$runningEnv')} {($ Id.VSub_DollarName '$currentSexp')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:currentResult) op: assign_op.Equal rhs: {(${ Id.VSub_Name RESULT)} spids: [730] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name currentResult))} spids: [739] ) ] ) ] ) ) (command.ShFunction name: 'variable::Lambda::getEnv' body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name VARIABLES_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'variable::Lambda::getEnv '> (${ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] spids: [764 779] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOfOrExit> } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>} ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {($ Id.VSub_DollarName '$lambdaToken')} ) (C {<declare>} {<-a>} {<Id.Lit_VarLike 'data='> (sh_array_literal left: <Id.Op_LParen _> words: [{(${ Id.VSub_Name RESULT)}] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) ) ) } spids: [844] ) ] ) ] ) ) (command.ShFunction name: 'variable::Lambda::getFormalArgs' body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name VARIABLES_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'variable::Lambda::getFormalArgs '> (${ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] spids: [872 887] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOfOrExit> } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>} ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {($ Id.VSub_DollarName '$lambdaToken')} ) (C {<declare>} {<-a>} {<Id.Lit_VarLike 'data='> (sh_array_literal left: <Id.Op_LParen _> words: [{(${ Id.VSub_Name RESULT)}] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) ) } spids: [952] ) ] ) ] ) ) (command.ShFunction name: 'variable::Lambda::getBody' body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(${ Id.VSub_Name VARIABLES_DEBUG)} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<stderr>} {(DQ <'variable::Lambda::getBody '> (${ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] spids: [980 995] ) ] ) (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOfOrExit> } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>} ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} {($ Id.VSub_DollarName '$lambdaToken')} ) (C {<declare>} {<-a>} {<Id.Lit_VarLike 'data='> (sh_array_literal left: <Id.Op_LParen _> words: [{(${ Id.VSub_Name RESULT)}] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) ) } spids: [1060] ) ] ) ] ) ) (command.ShFunction name: 'variable::Lambda::toSexp' body: (BraceGroup children: [ (C {<declare>} {<Id.Lit_VarLike 'token='> (DQ (${ Id.VSub_Number 1))}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getEnv> } {($ Id.VSub_DollarName '$token')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'env='> ($ Id.VSub_DollarName '$RESULT')}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getFormalArgs> } {($ Id.VSub_DollarName '$token')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'args='> ($ Id.VSub_DollarName '$RESULT')}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getBody> } {($ Id.VSub_DollarName '$token')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'body='> ($ Id.VSub_DollarName '$RESULT')}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <toSexp>} {($ Id.VSub_DollarName '$args')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'argsString='> ($ Id.VSub_DollarName '$RESULT')}) (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <toSexp>} {($ Id.VSub_DollarName '$body')} ) terminator: <Id.Op_Semi _> ) (C {<declare>} {<Id.Lit_VarLike 'bodyString='> ($ Id.VSub_DollarName '$RESULT')}) (command.Sentence child:(C {<declare>} {<bodyLen>}) terminator:<Id.Op_Semi _>) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike bodyLen> right: (arith_expr.Binary op_id: Id.Arith_Minus left: {(braced_var_sub token:<Id.VSub_Name bodyString> prefix_op:(Id.VSub_Pound))} right: {<Id.Lit_Digits 2>} ) ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bodyString) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name bodyString> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 1>} length: <Id.Lit_ArithVarLike bodyLen> ) ) } spids: [1208] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESULT) op: assign_op.Equal rhs: { (DQ <'(lambda '> (${ Id.VSub_Name argsString) <' '> ($ Id.VSub_DollarName '$bodyString') <')'> ) } spids: [1219] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$0')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$BASH_SOURCE')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [1239 1253] ) ] ) (C {<.>} { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>}) ) <'/test.sh'> } ) (command.CommandList children: [ (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaEnv) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1285] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaArgs) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1302] ) ] ) ] ) (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaArgs')} {<Identifier>} {(DQ <x>)} {<Identifier>} {(DQ <y>)} ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaBody) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1335] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaCode) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1352] ) ] ) ] ) (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaCode')} {<Identifier>} {(SQ <'*'>)} {<Identifier>} {(DQ <x>)} {<Identifier>} {(DQ <y>)} ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <append> } {($ Id.VSub_DollarName '$lambdaBody')} {($ Id.VSub_DollarName '$lambdaCode')} ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } { (DQ ($ Id.VSub_DollarName '$lambdaEnv') <' '> ($ Id.VSub_DollarName '$lambdaArgs') <' '> ($ Id.VSub_DollarName '$lambdaBody') ) } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambda) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1411] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:callingArgs) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1429] ) ] ) ] ) (C {<appendToList>} {($ Id.VSub_DollarName '$callingArgs')} {<Integer>} {<5>} {<Integer>} {<3>}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <call> } {($ Id.VSub_DollarName '$lambda')} {($ Id.VSub_DollarName '$callingArgs')} ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 15'>)} {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'((lambda (x y) (* x y) 5 3)'>)} ) ] ) (command.CommandList children: [ (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaEnv) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1509] ) ] ) ] ) (C {<setInEnv>} {($ Id.VSub_DollarName '$lambdaEnv')} {(DQ <y>)} {<Integer>} {<10>}) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaArgs) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1538] ) ] ) ] ) (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaArgs')} {<Identifier>} {(DQ <x>)}) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaBody) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1565] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambdaCode) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1582] ) ] ) ] ) (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaCode')} {<Identifier>} {(SQ <'*'>)} {<Identifier>} {(DQ <x>)} {<Identifier>} {(DQ <y>)} ) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <append> } {($ Id.VSub_DollarName '$lambdaBody')} {($ Id.VSub_DollarName '$lambdaCode')} ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } { (DQ ($ Id.VSub_DollarName '$lambdaEnv') <' '> ($ Id.VSub_DollarName '$lambdaArgs') <' '> ($ Id.VSub_DollarName '$lambdaBody') ) } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lambda) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1641] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new> } ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:callingArgs) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RESULT))} spids: [1659] ) ] ) ] ) (C {<appendToList>} {($ Id.VSub_DollarName '$callingArgs')} {<Integer>} {<5>}) (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <call> } {($ Id.VSub_DollarName '$lambda')} {($ Id.VSub_DollarName '$callingArgs')} ) (command.CommandList children: [ (command.Sentence child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} {(DQ (${ Id.VSub_Name RESULT))} ) terminator: <Id.Op_Semi _> ) (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 50'>)} {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'env(y=10) ((lambda (x) (* x y) 5)'>)} ) ] ) (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <report>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<isset>}) ) } {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <debug>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <printMetadata>})] spids: [1735 1765] ) ] ) ] )