---
source: crates/aiken-project/src/blueprint/validator.rs
description: "Code:\n\npub type Expr {\n  Val(Int)\n  Sum(Expr, Expr)\n  Mul(Expr, Expr)\n}\n\nvalidator recursive_types {\n  spend(datum: Option<Data>, redeemer: Expr, output_reference: Data, transaction: Data) {\n    True\n  }\n}\n"
---
{
  "title": "test_module.recursive_types.spend",
  "datum": {
    "title": "datum",
    "schema": {
      "$ref": "#/definitions/Data"
    }
  },
  "redeemer": {
    "title": "redeemer",
    "schema": {
      "$ref": "#/definitions/test_module~1Expr"
    }
  },
  "compiledCode": "<redacted>",
  "hash": "<redacted>",
  "definitions": {
    "Data": {
      "title": "Data",
      "description": "Any Plutus data."
    },
    "Int": {
      "dataType": "integer"
    },
    "test_module/Expr": {
      "title": "Expr",
      "anyOf": [
        {
          "title": "Val",
          "dataType": "constructor",
          "index": 0,
          "fields": [
            {
              "$ref": "#/definitions/Int"
            }
          ]
        },
        {
          "title": "Sum",
          "dataType": "constructor",
          "index": 1,
          "fields": [
            {
              "$ref": "#/definitions/test_module~1Expr"
            },
            {
              "$ref": "#/definitions/test_module~1Expr"
            }
          ]
        },
        {
          "title": "Mul",
          "dataType": "constructor",
          "index": 2,
          "fields": [
            {
              "$ref": "#/definitions/test_module~1Expr"
            },
            {
              "$ref": "#/definitions/test_module~1Expr"
            }
          ]
        }
      ]
    }
  }
}
