Files
MycLib/ASTPlayground/UserLib.json
T
2026-01-06 13:38:06 +01:00

578 lines
29 KiB
JSON

{
"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
}
}
}
]
}
}
}