[Python-ideas] "Immutable Builder" Pattern and Operator

Wes Turner wes.turner at gmail.com
Sun Jan 22 19:03:09 EST 2017


On Sunday, January 22, 2017, Wes Turner <wes.turner at gmail.com> wrote:

> Have you looked at pyrsistent for immutable/functional/persistent/copy-on-write
> data structures in Python?
>
> https://github.com/tobgu/pyrsistent/
>
> (freeze() / thaw())
>
> ... e.g. List and Dict NamedTuple values are not immutable (because
> append() and update() still work)
>

fn.py also has immutables:
https://github.com/kachayev/fn.py/blob/master/README.rst#persistent-data-structures


>
> On Sunday, January 22, 2017, Soni L. <fakedme+py at gmail.com
> <javascript:_e(%7B%7D,'cvml','fakedme%2Bpy at gmail.com');>> wrote:
>
>> I've been thinking of an Immutable Builder pattern and an operator to go
>> with it. Since the builder would be immutable, this wouldn't work:
>>
>> long_name = mkbuilder()
>> long_name.seta(a)
>> long_name.setb(b)
>> y = long_name.build()
>>
>> Instead, you'd need something more like this:
>>
>> long_name = mkbuilder()
>> long_name = long_name.seta(a)
>> long_name = long_name.setb(b)
>> y = long_name.build()
>>
>> Or we could add an operator to simplify it:
>>
>> long_name = mkbuilder()
>> long_name .= seta(a)
>> long_name .= setb(b)
>> y = long_name.build()
>>
>> (Yes, I'm aware you can x = mkbuilder().seta(a).setb(b), then y =
>> x.build(). But that doesn't work if you wanna "fork" the builder. Some
>> builders, like a builder for network connections of some sort, would work
>> best if they were immutable/forkable.)
>> _______________________________________________
>> Python-ideas mailing list
>> Python-ideas at python.org
>> https://mail.python.org/mailman/listinfo/python-ideas
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170122/6a509a49/attachment.html>


More information about the Python-ideas mailing list