diff --git a/ASTPlayground/UserLib.json b/ASTPlayground/UserLib.json index 400bf42..eeba53d 100644 --- a/ASTPlayground/UserLib.json +++ b/ASTPlayground/UserLib.json @@ -541,5 +541,706 @@ } ] } + }, + "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": "sum-product" + }, + "Initializer": { + "NodeType": "LambdaExpr", + "Parameters": [ + { + "NodeType": "Identifier", + "Name": "xs" + }, + { + "NodeType": "Identifier", + "Name": "ys" + } + ], + "Body": { + "NodeType": "Block", + "Expressions": [ + { + "NodeType": "VarDecl", + "Identifier": { + "NodeType": "Identifier", + "Name": "loop" + }, + "Initializer": { + "NodeType": "LambdaExpr", + "Parameters": [ + { + "NodeType": "Identifier", + "Name": "i" + }, + { + "NodeType": "Identifier", + "Name": "acc" + } + ], + "Body": { + "NodeType": "IfExpr", + "Condition": { + "NodeType": "FunctionCall", + "Callee": { + "NodeType": "Identifier", + "Name": "=" + }, + "Arguments": [ + { + "NodeType": "Identifier", + "Name": "i" + }, + { + "NodeType": "FunctionCall", + "Callee": { + "NodeType": "Identifier", + "Name": "series-count" + }, + "Arguments": [ + { + "NodeType": "Identifier", + "Name": "xs" + } + ] + } + ] + }, + "ThenBranch": { + "NodeType": "Identifier", + "Name": "acc" + }, + "ElseBranch": { + "NodeType": "Recur", + "Arguments": [ + { + "NodeType": "FunctionCall", + "Callee": { + "NodeType": "Identifier", + "Name": "+" + }, + "Arguments": [ + { + "NodeType": "Identifier", + "Name": "i" + }, + { + "NodeType": "Constant", + "Value": { + "Kind": "Scalar", + "Value": { + "Kind": "Ordinal", + "Value": 1 + } + } + } + ] + }, + { + "NodeType": "FunctionCall", + "Callee": { + "NodeType": "Identifier", + "Name": "+" + }, + "Arguments": [ + { + "NodeType": "Identifier", + "Name": "acc" + }, + { + "NodeType": "FunctionCall", + "Callee": { + "NodeType": "Identifier", + "Name": "*" + }, + "Arguments": [ + { + "NodeType": "Indexer", + "Base": { + "NodeType": "Identifier", + "Name": "xs" + }, + "Index": { + "NodeType": "Identifier", + "Name": "i" + } + }, + { + "NodeType": "Indexer", + "Base": { + "NodeType": "Identifier", + "Name": "ys" + }, + "Index": { + "NodeType": "Identifier", + "Name": "i" + } + } + ] + } + ] + } + ] + } + } + } + }, + { + "NodeType": "FunctionCall", + "Callee": { + "NodeType": "Identifier", + "Name": "loop" + }, + "Arguments": [ + { + "NodeType": "Constant", + "Value": { + "Kind": "Scalar", + "Value": { + "Kind": "Ordinal", + "Value": 0 + } + } + }, + { + "NodeType": "Constant", + "Value": { + "Kind": "Scalar", + "Value": { + "Kind": "Ordinal", + "Value": 0 + } + } + } + ] + } + ] + } + } + }, + { + "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-y" + } + ] + } + ] + } + }, + { + "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" + } + ] + } + } + ] + } } } \ No newline at end of file