Skip to main content

LambdaFn

Struct LambdaFn 

Source
pub struct LambdaFn;

Trait Implementations§

Source§

impl Debug for LambdaFn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Function for LambdaFn

Creates an anonymous callable that can be invoked with spreadsheet arguments.

LAMBDA captures its defining local scope and returns a reusable function value.

§Remarks

  • All arguments except the last are parameter names; the last argument is the body expression.
  • Parameter names must be unique (case-insensitive), or #VALUE! is returned.
  • Invocation arity must exactly match the declared parameter count.
  • Returning an uninvoked lambda as a final cell value yields a #CALC! in evaluation.

§Examples

title: "Inline lambda invocation"
formula: "=LAMBDA(x,x+1)(41)"
expected: 42
title: "Lambda captures outer LET bindings"
formula: "=LET(k,10,addk,LAMBDA(n,n+k),addk(5))"
expected: 15
title: "Duplicate parameter names are invalid"
formula: "=LAMBDA(x,x,x+1)"
expected: "#VALUE!"
related:
  - LET
  - IF
  - SUM
faq:
  - q: "Why does =LAMBDA(x,x+1) return #CALC! instead of a number?"
    a: "LAMBDA returns a callable value. In a cell result position, it must be invoked, for example =LAMBDA(x,x+1)(1)."
  - q: "Does a LAMBDA read outer LET variables at call time or definition time?"
    a: "Definition time. The closure captures its lexical environment when created."
  - q: "Can I call a LAMBDA with fewer or extra arguments?"
    a: "No. Invocation arity must match the declared parameter count exactly, or #VALUE! is returned."

[formualizer-docgen:schema:start] Name: LAMBDA Type: LambdaFn Min args: 1 Max args: variadic Variadic: true Signature: LAMBDA() Arg schema: <unavailable: arg_schema panicked> Caps: PURE, SHORT_CIRCUIT [formualizer-docgen:schema:end]

Source§

fn caps(&self) -> FnCaps

Capability flags for this function
Source§

fn name(&self) -> &'static str

Source§

fn min_args(&self) -> usize

Source§

fn variadic(&self) -> bool

Source§

fn dispatch<'a, 'b, 'c>( &self, args: &'c [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext<'b>, ) -> Result<CalcValue<'b>, ExcelError>

Dispatch to the unified evaluation path with automatic argument validation.
Source§

fn eval<'a, 'b, 'c>( &self, args: &'c [ArgumentHandle<'a, 'b>], _ctx: &dyn FunctionContext<'b>, ) -> Result<CalcValue<'b>, ExcelError>

The unified evaluation path. Read more
Source§

fn namespace(&self) -> &'static str

Source§

fn volatile(&self) -> bool

Source§

fn arg_schema(&self) -> &'static [ArgSchema]

Source§

fn aliases(&self) -> &'static [&'static str]

Optional list of additional alias names (case-insensitive) that should resolve to this function. Default: empty slice. Implementors can override to expose legacy names. Returned slice must have ’static lifetime (typically a static array reference).
Source§

fn function_salt(&self) -> u64

Source§

fn eval_reference<'a, 'b, 'c>( &self, _args: &'c [ArgumentHandle<'a, 'b>], _ctx: &dyn FunctionContext<'b>, ) -> Option<Result<ReferenceType, ExcelError>>

Optional reference result path. Only called by the interpreter/engine when the callsite expects a reference (e.g., range combinators, by-ref argument positions, or spill sources). Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,