[Python-ideas] "Immutable Builder" Pattern and Operator
Soni L.
fakedme+py at gmail.com
Sun Jan 22 21:49:19 EST 2017
On 22/01/17 10:03 PM, Wes Turner wrote:
>
>
> On Sunday, January 22, 2017, Wes Turner <wes.turner at gmail.com
> <mailto: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/
> <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
You seem to be thinking of "immutable object builder". Not "the builder
itself is immutable and operations on it create new builders".
>
> 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
> <https://mail.python.org/mailman/listinfo/python-ideas>
> Code of Conduct: http://python.org/psf/codeofconduct/
> <http://python.org/psf/codeofconduct/>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170123/64e7b96e/attachment.html>
More information about the Python-ideas
mailing list