Skip to content

Some operators do not mutate pointer args. #99

@python-processing-unit

Description

@python-processing-unit

According to the specification section 2.4:

The syntax @name MUST form a pointer literal, where @ is a dedicated lexical token and name is an identifier resolved in the current lexical environment.

And according to the specification section 5.4:

The language's pointer mechanism MUST create an alias to an existing visible binding. Pointer creation MUST resolve any existing pointer chain so the new pointer refers to the underlying non-pointer target. Reading through a symbol bound to a pointer MUST behave as an ordinary dereference, so plain reads yield the pointed-to value.

Assigning through a symbol whose current binding is a pointer MUST update the pointed-to target rather than replace the pointer object.

This implies that passing a pointer to an operator which creates a derivative of the argument (such as JOIN) mutates the pointer. In the implementation, however, only a small number of operators implement pointer mutation.

In addition to making all operators that create a derivative of it's arguments mutate pointer args, explicitly state this in the specification.

Metadata

Metadata

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentation

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions