Skip to content

Chained state objects #414

@dphfox

Description

@dphfox

Currently, we write a lot of:

scope:Spring(
    scope:Computed(function()
        ...
    end),
    50
)

What if instead, you could write more of:

scope:Computed(function()
    ...
end):Spring(50)

In short, the proposal would be to allow extending the metatable of created state objects to include method calls to state object constructors that declare themselves as chainable.

In the future, this could lead to functional-style pipelines:

numCoins
    :Map(function(use, x) return x - use(itemPrice) end)
    :Spring(50)
    :Map(function(use, x) return math.round(x) end)
    :Map(function(use, x) return `You have {x} coins` end)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions