[Python-ideas] Jump to function as an an alternative to call function
David Mertz
mertz at gnosis.cx
Wed Aug 15 20:35:35 EDT 2018
Goto considered harmful.
https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf&ved=2ahUKEwi8lqHYqfDcAhXImOAKHeAzDmsQFjAEegQIBhAB&usg=AOvVaw1CZug_36-PbevItYXTb7SR
On Wed, Aug 15, 2018, 3:52 PM Jacob Solinsky <jacobsolinsky at gmail.com>
wrote:
> -Jumping to a function as opposed to calling a function
>
> When a function is jumped to, it inherits the variables in the caller’s
> local namespace and is free to modify them or add new local variables,
> unlike a normal function call, wherein the caller’s namespace is
> inaccesible. At present, the only way I know of to accomplish this is to
> bundle all variables in the caller method’s namespace as properties of the
> method’s instance and have the callee method modify those properties.
> Though it is easier to read code written this way, it resulted in a great
> deal of redundancy in the code I was writing. The task I was attempting to
> accomplish was approximately this:
>
> class Verb:
> def __init__(self, parameters):
> self.parameters = parameters
> def conjugate(self):
> #Using the parameters, chose an appropriate list of
> morphemes to prefix and suffix to the verb
> self.morphemelist = morphemelist
> for morpheme in self.morphemelist:
> morpheme.mutate()
> returnstring = ‘'
> for morpheme in self.morphemelist:
> returnstring = returnstring + morpheme.form
> returnstring = returnstring
>
> class Morpheme:
> def __init__(self, verb, form, precedingmorpheme,
> succeedingmorpheme):
> self.verb = verb
> self.form = form
> self.precedingmorpheme = precedingmorpheme
> self.succeedingmorpheme = succeedingmorpheme
> def mutate(self):
> #Using the verb’s parameters and the type and form of the
> preceding and succeeding morpheme, mutate this morpheme’s form so that
> #a correct verb form is produced
> self.form = newform
>
> class Ban(Morpheme):
> def __init__(self, verb, form):
> super().__init__(verb, ‘ban’)
> def mutate(self):
> #This morpheme has mutation logic unique to itself but
> with many similarities to the default morpheme’s mutation logic
> self.form = newform
>
> Each subclass of Morpheme has its own slightly different mutate method.
> Some subclasses of Morpheme needed to access and manipulate a great deal of
> information about the verb and their surroundings, while other subclasses’
> mutate methods differed little from the default. Most of the variables
> manipulated by the mutate method are not used by any other methods of class
> Morpheme and thus should not be made properties of the attached instance.
> What I wish I were able to do is write many little methods that modify the
> same set of local variables and compose them together into a complete
> mutate method. This would be effectively equivalent to having the “jump to
> function” calls be replaced with the text in the function’s body, like a C
> language macrosubstitution, but without using anything like preprocessor
> directives.
>
> Let foo(a, b) be the syntax to call foo(a, b), and foo(a, b)% be the
> syntax to jump to foo(a, b)
>
> def foo(a):
> return a + c
>
> def bar(a, c):
> return foo(a)
>
> def bazz(a, c):
> return foo(a)%
>
> c = 5
>
> call = bar(1, 3)
>
> jump = bazz(1, 3)
>
>
> After execution, call in the above code would be 6 and jump in the above
> code would be 4.
>
>
> _______________________________________________
> 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/20180815/024ffebe/attachment.html>
More information about the Python-ideas
mailing list