{ "my-3": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "a" }, { "NodeType": "Identifier", "Name": "b" }, { "NodeType": "Identifier", "Name": "c" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "NodeType": "Identifier", "Name": "a" }, { "NodeType": "Identifier", "Name": "b" } ] }, { "NodeType": "Identifier", "Name": "c" } ] } }, "repeat": { "NodeType": "MacroDef", "Name": { "NodeType": "Identifier", "Name": "repeat" }, "Parameters": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Identifier", "Name": "body" } ], "Body": { "NodeType": "Quasiquote", "Expression": { "NodeType": "Block", "Expressions": [ { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "loop" }, "Initializer": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "counter" } ], "Body": { "NodeType": "IfExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": ">" }, "Arguments": [ { "NodeType": "Identifier", "Name": "counter" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } } ] }, "ThenBranch": { "NodeType": "Block", "Expressions": [ { "NodeType": "Unquote", "Expression": { "NodeType": "Identifier", "Name": "body" } }, { "NodeType": "Recur", "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "Identifier", "Name": "counter" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } ] } ] }, "ElseBranch": { "NodeType": "Block", "Expressions": [ ] } } } }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "loop" }, "Arguments": [ { "NodeType": "Unquote", "Expression": { "NodeType": "Identifier", "Name": "n" } } ] } ] } } }, "factorial": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "n" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Identifier", "Name": "acc" } ], "Body": { "NodeType": "TernaryExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "<=" }, "Arguments": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] }, "ThenBranch": { "NodeType": "Identifier", "Name": "acc" }, "ElseBranch": { "NodeType": "Recur", "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "acc" }, { "NodeType": "Identifier", "Name": "n" } ] } ] } } }, "Arguments": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } }, "my-add": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "a" }, { "NodeType": "Identifier", "Name": "b" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "NodeType": "Identifier", "Name": "a" }, { "NodeType": "Identifier", "Name": "b" } ] } }, "my-square": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "x" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "x" }, { "NodeType": "Identifier", "Name": "x" } ] } }, "CreateSMA": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "len" } ], "Body": { "NodeType": "Block", "Expressions": [ { "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": "Identifier", "Name": "series" }, { "NodeType": "Identifier", "Name": "val" } ], "Body": { "NodeType": "Block", "Expressions": [ { "NodeType": "Assignment", "Identifier": { "NodeType": "Identifier", "Name": "sum" }, "Value": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum" }, { "NodeType": "Identifier", "Name": "val" } ] } }, { "NodeType": "Assignment", "Identifier": { "NodeType": "Identifier", "Name": "count" }, "Value": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "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": "Identifier", "Name": "count" }, { "NodeType": "Identifier", "Name": "len" } ] }, "ThenBranch": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum" }, { "NodeType": "Indexer", "Base": { "NodeType": "Identifier", "Name": "series" }, "Index": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "Identifier", "Name": "count" }, { "NodeType": "Identifier", "Name": "len" } ] } } ] }, "ElseBranch": { "NodeType": "Identifier", "Name": "sum" } } }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "/" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum" }, { "NodeType": "TernaryExpr", "Condition": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "<" }, "Arguments": [ { "NodeType": "Identifier", "Name": "count" }, { "NodeType": "Identifier", "Name": "len" } ] }, "ThenBranch": { "NodeType": "Identifier", "Name": "count" }, "ElseBranch": { "NodeType": "Identifier", "Name": "len" } } ] } ] } } ] } }, "linear-regression": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "x-series" }, { "NodeType": "Identifier", "Name": "y-series" } ], "Body": { "NodeType": "Block", "Expressions": [ { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "series-count" }, "Initializer": { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "series" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "Reduce" }, "Arguments": [ { "NodeType": "Identifier", "Name": "series" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } }, { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "acc" }, { "NodeType": "Identifier", "Name": "item" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "NodeType": "Identifier", "Name": "acc" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 1 } } } ] } } ] } } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "n" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "series-count" }, "Arguments": [ { "NodeType": "Identifier", "Name": "x-series" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "sum-x" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "Reduce" }, "Arguments": [ { "NodeType": "Identifier", "Name": "x-series" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } }, { "NodeType": "Identifier", "Name": "+" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "sum-y" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "Reduce" }, "Arguments": [ { "NodeType": "Identifier", "Name": "y-series" }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } }, { "NodeType": "Identifier", "Name": "+" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "sum-x-sq" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "Reduce" }, "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "Map" }, "Arguments": [ { "NodeType": "Identifier", "Name": "x-series" }, { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "x" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "x" }, { "NodeType": "Identifier", "Name": "x" } ] } } ] }, { "NodeType": "Constant", "Value": { "Kind": "Scalar", "Value": { "Kind": "Ordinal", "Value": 0 } } }, { "NodeType": "Identifier", "Name": "+" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "sum-xy" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "sum-product" }, "Arguments": [ { "NodeType": "Identifier", "Name": "x-series" }, { "NodeType": "Identifier", "Name": "y-series" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "m-numerator" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Identifier", "Name": "sum-xy" } ] }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum-x" }, { "NodeType": "Identifier", "Name": "sum-x" } ] } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "m-denominator" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "n" }, { "NodeType": "Identifier", "Name": "sum-x-sq" } ] }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum-x" }, { "NodeType": "Identifier", "Name": "sum-x" } ] } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "m" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "/" }, "Arguments": [ { "NodeType": "Identifier", "Name": "m-numerator" }, { "NodeType": "Identifier", "Name": "m-denominator" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "mean-x" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "/" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum-x" }, { "NodeType": "Identifier", "Name": "n" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "mean-y" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "/" }, "Arguments": [ { "NodeType": "Identifier", "Name": "sum-y" }, { "NodeType": "Identifier", "Name": "n" } ] } }, { "NodeType": "VarDecl", "Identifier": { "NodeType": "Identifier", "Name": "b" }, "Initializer": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "-" }, "Arguments": [ { "NodeType": "Identifier", "Name": "mean-y" }, { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "m" }, { "NodeType": "Identifier", "Name": "mean-x" } ] } ] } }, { "NodeType": "LambdaExpr", "Parameters": [ { "NodeType": "Identifier", "Name": "x" } ], "Body": { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "+" }, "Arguments": [ { "NodeType": "FunctionCall", "Callee": { "NodeType": "Identifier", "Name": "*" }, "Arguments": [ { "NodeType": "Identifier", "Name": "m" }, { "NodeType": "Identifier", "Name": "x" } ] }, { "NodeType": "Identifier", "Name": "b" } ] } } ] } }, "test2": { "NodeType": "MacroDef", "Name": { "NodeType": "Identifier", "Name": "test2" }, "Parameters": [ { "NodeType": "Identifier", "Name": "body" } ], "Body": { "NodeType": "Quasiquote", "Expression": { "NodeType": "LambdaExpr", "Parameters": [ ], "Body": { "NodeType": "Unquote", "Expression": { "NodeType": "Identifier", "Name": "body" } } } } }, "debug-mode": { "NodeType": "Keyword", "Name": "true" }, "test": { "NodeType": "MacroDef", "Name": { "NodeType": "Identifier", "Name": "test" }, "Parameters": [ { "NodeType": "Identifier", "Name": "body" } ], "Body": { "NodeType": "Quasiquote", "Expression": { "NodeType": "LambdaExpr", "Parameters": [ ], "Body": { "NodeType": "Unquote", "Expression": { "NodeType": "Identifier", "Name": "body" } } } } } }