(CommandList children: [ (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [6 11] ) (/test.sh) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('((lambda () \n') (' 10)\n') (' )\n'))} do_expansion: True here_end: EOF was_filled: T spids: [22] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [19 29] ) } spids: [18] ) ] spids: [18] ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 10'))} {(DQ (${ VSub_Name value))} {(DQ ('Basic lambda without parameters'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('((lambda (x y) \n') (' (+ x y))\n') (' 5 10)\n'))} do_expansion: True here_end: EOF was_filled: T spids: [58] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [55 65] ) } spids: [54] ) ] spids: [54] ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 15'))} {(DQ (${ VSub_Name value))} {(DQ ('Basic lambda with parameters'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('(\n') (' (\n') (' (lambda (x) \n') (' (lambda (y) \n') (' (+ x y))\n') (' )\n') (' 2) 3)\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [94] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [91 105] ) } spids: [90] ) ] spids: [90] ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 5'))} {(DQ (${ VSub_Name value))} {(DQ ('Returning lambda with closure'))} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (report)}) ] )