SboxSuperuser/Core/Effects/EffectFunction.cs

Defines an internal record representing a built-in effect function, holding a parameter signature string, a return value kind, and a delegate that takes evaluated arguments and returns a value. Used by the effect interpreter to validate arguments before invoking the body.

namespace SboxSuperuser.Core.Effects;

/// <summary>
/// A built-in function. <see cref="Parameters"/> has one letter per parameter: n number, c color, t text,
/// s text or list. Arguments are checked against it before <see cref="Body"/> runs.
/// </summary>
internal sealed record EffectFunction( string Parameters, EffectValueKind Returns, Func<EffectValue[], EffectValue> Body );