Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++

Bacsa

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #15 kdy: 17. 08. 2018, 13:53:44 »
Je lepší psát k tématu
Tak to dělej, někdo chce anonymní funkci a ty píšeš kód mimo mísu.


Kojot

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #16 kdy: 17. 08. 2018, 14:03:25 »
Je lepší psát k tématu
Tak to dělej, někdo chce anonymní funkci a ty píšeš kód mimo mísu.
Vždyť je anonymní. To spíš mimo mísu jsi ty  ;).


Bacsa

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #18 kdy: 17. 08. 2018, 14:12:28 »
Je lepší psát k tématu
Tak to dělej, někdo chce anonymní funkci a ty píšeš kód mimo mísu.
Vždyť je anonymní. To spíš mimo mísu jsi ty  ;).
Není. Máš ta pojmenovanou lokální proměnnou. Až se jí zbavíš, tak to bude řešením. Ale vzhledem k tomu, žes ani nebyl schopen pochopit zadání, těžko přijdeš s řešením.

n

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #19 kdy: 17. 08. 2018, 14:13:38 »
Je lepší psát k tématu
Tak to dělej, někdo chce anonymní funkci a ty píšeš kód mimo mísu.
Vždyť je anonymní. To spíš mimo mísu jsi ty  ;).
Není. Máš ta pojmenovanou lokální proměnnou. Až se jí zbavíš, tak to bude řešením. Ale vzhledem k tomu, žes ani nebyl schopen pochopit zadání, těžko přijdeš s řešením.

Ty ses dobrej mamlas, clovece, poposkoc si... ;)


Kojot

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #20 kdy: 17. 08. 2018, 14:23:36 »
Není. Máš ta pojmenovanou lokální proměnnou. Až se jí zbavíš, tak to bude řešením. Ale vzhledem k tomu, žes ani nebyl schopen pochopit zadání, těžko přijdeš s řešením.

Tak bez pojmenování lokálních proměnných, nebo dokonce parametrů, jsem to ještě nezkoušel. Snad na tuto úroveň jednou dospěju ;D.

Kojot

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #21 kdy: 17. 08. 2018, 14:27:35 »
možná tohle http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0200r0.html ?
Podle mě je to v zásadě to samé. Do auto paramteru lambdy se předává požadovaná funkce. V tomto případě objekt třídy y_combinator_result, který zavolá uloženou funkci.

v

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #22 kdy: 17. 08. 2018, 14:34:50 »
možná tohle http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0200r0.html ?
Podle mě je to v zásadě to samé. Do auto paramteru lambdy se předává požadovaná funkce. V tomto případě objekt třídy y_combinator_result, který zavolá uloženou funkci.
almost_gcd se tam použije jenom jednou, to bych řekl, že je docela rozdíl

optimizer

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #23 kdy: 17. 08. 2018, 14:47:34 »
clojure style rekurze v pythonu jde

Kód: [Vybrat]
import types, inspect

def recur(*args, **kwargs):
      return types.FunctionType(inspect.stack()[1][0].f_code, globals())(*args, **kwargs)

fact = lambda x: x * recur(x - 1) if x > 1 else x

v praxi to použije jen dement.

Bacsa

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #24 kdy: 17. 08. 2018, 14:53:30 »
clojure style rekurze v pythonu jde

Kód: [Vybrat]
import types, inspect

def recur(*args, **kwargs):
      return types.FunctionType(inspect.stack()[1][0].f_code, globals())(*args, **kwargs)

fact = lambda x: x * recur(x - 1) if x > 1 else x

v praxi to použije jen dement.
To bezpochyby, protože to je dementní řešení. Žes to sem dal, hanba by tě měla fackovat. (P.S. Proč tu není zvracející smajlík?)

Kojot

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #25 kdy: 17. 08. 2018, 14:59:48 »
možná tohle http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0200r0.html ?
Podle mě je to v zásadě to samé. Do auto paramteru lambdy se předává požadovaná funkce. V tomto případě objekt třídy y_combinator_result, který zavolá uloženou funkci.
almost_gcd se tam použije jenom jednou, to bych řekl, že je docela rozdíl
Tak protože to předávání funkce se dějě v operátoru volání objektu y_combinator_result.
Kód: [Vybrat]
template<class ...Args>
decltype(auto) operator()(Args &&...args) {
    return fun_(std::ref(*this), std::forward<Args>(args)...);
}
Auto parametr gcd v lambdě je pak reference na objekt y_combinator_result. Výhoda je, že si to předávání nemusíš psát sám, ale udělá to ten objekt y_combinator_result.

mikrom

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #26 kdy: 17. 08. 2018, 15:09:00 »
Mozne to je, ale nevim, zda tohle zrovna v Pythonu chces delat

https://stackoverflow.com/questions/481692/can-a-lambda-function-call-itself-recursively-in-python
je to dost nepekne
Kód: (python 2.7) [Vybrat]
Python 2.7.6 (default, Nov 23 2017, 15:49:48)
[GCC 4.8.4] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), [1, 2, 3, 4, 5])
[1, 2, 6, 24, 120]
>>>
[code python  3.4]
Python 3.4.3 (default, Nov 28 2017, 16:41:13)
[GCC 4.8.4] on linux
Type "copyright", "credits" or "license()" for more information.
>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), [1, 2, 3, 4, 5])
<map object at 0x7f3c31f384a8>
>>> list(map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), [1, 2, 3, 4, 5]))
[1, 2, 6, 24, 120]
>>>
[/code]

optimizer

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #27 kdy: 17. 08. 2018, 15:14:17 »
To bezpochyby, protože to je dementní řešení. Žes to sem dal, hanba by tě měla fackovat. (P.S. Proč tu není zvracející smajlík?)

Na dementní otázku dementní řešení. Zatím jsem neviděl lepší.

Bacsa

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #28 kdy: 17. 08. 2018, 23:17:30 »
To bezpochyby, protože to je dementní řešení. Žes to sem dal, hanba by tě měla fackovat. (P.S. Proč tu není zvracející smajlík?)
Na dementní otázku dementní řešení. Zatím jsem neviděl lepší.
Ty jsi ale kretén. Ta otázka je normální a zajímavá, akorát že ty vůbec nevíš, která bije. Vrať se do zvláštní školy.

optimizer

Re:Referenčně transparentní rekurzivní anonymní funkce v Pythonu a C++
« Odpověď #29 kdy: 18. 08. 2018, 00:38:25 »
Ty jsi ale kretén. Ta otázka je normální a zajímavá, akorát že ty vůbec nevíš, která bije. Vrať se do zvláštní školy.

recall z R v Pythonu, přesně jak tazatel chtěl

Kód: [Vybrat]
import types, inspect

def recall(*args, **kwargs):
      return types.FunctionType(inspect.stack()[1][0].f_code, globals())(*args, **kwargs)

list(map(lambda x: x * recall(x - 1) if x > 1 else x, [1, 2, 3, 4, 5]))
# [1, 2, 6, 24, 120]