{ "repeat": { "NodeType": "MacroDef", "Name": { "NodeType": "Identifier", "Name": "repeat" }, "Parameters": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Identifier", "Name": "body" } ] }, "Body": { "NodeType": "Quasiquote", "Expression": { "NodeType": "Block", "Expressions": { "NodeType": "Tuple", "Elements": [ { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "loop" }, "Initializer": { "NodeType": "LambdaExpr", "Parameters": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "counter" } ] }, "Body": { "NodeType": "IfExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": ">" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "counter" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } } ] } }, "ThenBranch": { "NodeType": "Block", "Expressions": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Unquote", "Expression": { "NodeType": "Identifier", "Name": "body" } }, { "NodeType": "Recur", "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "counter" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } } ] } } ] } }, "ElseBranch": { "NodeType": "Block", "Expressions": { "NodeType": "Tuple", "Elements": [ ] } } } } }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "loop" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Unquote", "Expression": { "NodeType": "Identifier", "Name": "n" } } ] } } ] } } } }, "factorial": { "NodeType": "LambdaExpr", "Parameters": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "n" } ] }, "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "LambdaExpr", "Parameters": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Identifier", "Name": "acc" } ] }, "Body": { "NodeType": "TernaryExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "<=" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } }, "ThenBranch": { "NodeType": "Identifier", "Name": "acc" }, "ElseBranch": { "NodeType": "Recur", "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "acc" }, { "NodeType": "Identifier", "Name": "n" } ] } } ] } } } }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } } }, "CreateSMA": { "NodeType": "LambdaExpr", "Parameters": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "len" } ] }, "Body": { "NodeType": "Block", "Expressions": { "NodeType": "Tuple", "Elements": [ { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "sum" }, "Initializer": { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "count" }, "Initializer": { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } } }, { "NodeType": "LambdaExpr", "Parameters": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "series" }, { "NodeType": "Identifier", "Name": "val" } ] }, "Body": { "NodeType": "Block", "Expressions": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Assignment", "Identifier": { "NodeType": "Identifier", "Name": "sum" }, "Value": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "sum" }, { "NodeType": "Identifier", "Name": "val" } ] } } }, { "NodeType": "Assignment", "Identifier": { "NodeType": "Identifier", "Name": "count" }, "Value": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "count" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } } }, { "NodeType": "Assignment", "Identifier": { "NodeType": "Identifier", "Name": "sum" }, "Value": { "NodeType": "TernaryExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": ">" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "count" }, { "NodeType": "Identifier", "Name": "len" } ] } }, "ThenBranch": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "sum" }, { "NodeType": "Indexer", "Base": { "NodeType": "Identifier", "Name": "series" }, "Index": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "count" }, { "NodeType": "Identifier", "Name": "len" } ] } } } ] } }, "ElseBranch": { "NodeType": "Identifier", "Name": "sum" } } }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "/" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "sum" }, { "NodeType": "TernaryExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "<" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Identifier", "Name": "count" }, { "NodeType": "Identifier", "Name": "len" } ] } }, "ThenBranch": { "NodeType": "Identifier", "Name": "count" }, "ElseBranch": { "NodeType": "Identifier", "Name": "len" } } ] } } ] } } } ] } } }, "broker": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "create-broker" }, "Arguments": { "NodeType": "Tuple", "Elements": [ { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Float", "Value": 10000.0 } } } ] } } }