Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: fajront 27. 04. 2017, 11:08:31

Název: CPS a bind
Přispěvatel: fajront 27. 04. 2017, 11:08:31
Ahoj, učím se FP, abych byl aspoň schopen porozumět článkům o funkcionálním přístupu, a celkem chápu třeba Maybe. Teď jsem se dočetl, že kontinuace je také monáda, ale zaboha nejsem schopen napsat pro ni bind, tedy když mám hodnotu typu (A->R)->R, abych ji mohl dát do funkce beroucí na vstupu hodnotu typu A. Jde mi o vyjádření v nějakém ne čistě funkc. jazyce.
Název: Re:CPS a bind
Přispěvatel: zboj 27. 04. 2017, 18:48:21
Ahoj, učím se FP, abych byl aspoň schopen porozumět článkům o funkcionálním přístupu, a celkem chápu třeba Maybe. Teď jsem se dočetl, že kontinuace je také monáda, ale zaboha nejsem schopen napsat pro ni bind, tedy když mám hodnotu typu (A->R)->R, abych ji mohl dát do funkce beroucí na vstupu hodnotu typu A. Jde mi o vyjádření v nějakém ne čistě funkc. jazyce.

bind(m,f)=λg.m(λx.f(x)(g))
Název: Re:CPS a bind
Přispěvatel: v 27. 04. 2017, 19:28:11
http://stackoverflow.com/questions/3322540/how-and-why-does-the-haskell-cont-monad-work
Název: Re:CPS a bind
Přispěvatel: zboj 28. 04. 2017, 14:05:45
Ahoj, učím se FP, abych byl aspoň schopen porozumět článkům o funkcionálním přístupu, a celkem chápu třeba Maybe. Teď jsem se dočetl, že kontinuace je také monáda, ale zaboha nejsem schopen napsat pro ni bind, tedy když mám hodnotu typu (A->R)->R, abych ji mohl dát do funkce beroucí na vstupu hodnotu typu A. Jde mi o vyjádření v nějakém ne čistě funkc. jazyce.

Tak například ve Swiftu to je easy-peasy:

Kód: [Vybrat]
func contUnit<T>(_ x:T) -> ((T)->Any)->Any {
    return { $0(x) }
}

func contBind<T1,T2>(_ m:@escaping ((T1)->Any)->Any, _ f1:@escaping (T1)->((T2)->Any)->Any) -> ((T2)->Any)->Any {
    return { f2 in m{ f1($0)(f2) }}
}
Název: Re:CPS a bind
Přispěvatel: UF 29. 04. 2017, 19:29:43
Nechci prudit ale k cemu je tohle dobre kdyz pominu mentalni cviceni a vubec vsechny mozne 'akademicke' duvody?
Název: Re:CPS a bind
Přispěvatel: zboj 29. 04. 2017, 19:58:13
Nechci prudit ale k cemu je tohle dobre kdyz pominu mentalni cviceni a vubec vsechny mozne 'akademicke' duvody?
Je to praktické a užitečné, ale je to vyšší level (liga). Senioři jsou mnohem produktivnější právě proto, že používají takové sofistikované postupy.
Název: Re:CPS a bind
Přispěvatel: UF 29. 04. 2017, 20:05:45
Nechci prudit ale k cemu je tohle dobre kdyz pominu mentalni cviceni a vubec vsechny mozne 'akademicke' duvody?
Je to praktické a užitečné, ale je to vyšší level (liga). Senioři jsou mnohem produktivnější právě proto, že používají takové sofistikované postupy.

Takze pokud se na to budu divat jako na jazyk tak dva kteri pisou a ctou stejne jsou daleko efektivnejsi a mohou resit daleko slozitejsi ulohy.
Název: Re:CPS a bind
Přispěvatel: zboj 29. 04. 2017, 20:13:26
Nechci prudit ale k cemu je tohle dobre kdyz pominu mentalni cviceni a vubec vsechny mozne 'akademicke' duvody?
Je to praktické a užitečné, ale je to vyšší level (liga). Senioři jsou mnohem produktivnější právě proto, že používají takové sofistikované postupy.

Takze pokud se na to budu divat jako na jazyk tak dva kteri pisou a ctou stejne jsou daleko efektivnejsi a mohou resit daleko slozitejsi ulohy.
Nebo nějakou běžnou úlohu mnohem rychleji.
Název: Re:CPS a bind
Přispěvatel: zboj 29. 04. 2017, 21:11:49
Nechci prudit ale k cemu je tohle dobre kdyz pominu mentalni cviceni a vubec vsechny mozne 'akademicke' duvody?
P.S. "Akademické" postupy jsou obvykle rychlejší a bezpečnější právě proto, že jsou mnohem promyšlenější a abstraktnější, je to něco jako psát řekněme web server v asembleru vs. Javě. Jen ještě o úroveň výš.