CPS a bind

fajront

CPS a bind
« kdy: 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.


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:CPS a bind
« Odpověď #1 kdy: 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))


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:CPS a bind
« Odpověď #3 kdy: 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) }}
}

UF

Re:CPS a bind
« Odpověď #4 kdy: 29. 04. 2017, 19:29:43 »
Nechci prudit ale k cemu je tohle dobre kdyz pominu mentalni cviceni a vubec vsechny mozne 'akademicke' duvody?


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:CPS a bind
« Odpověď #5 kdy: 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.

UF

Re:CPS a bind
« Odpověď #6 kdy: 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.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:CPS a bind
« Odpověď #7 kdy: 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.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:CPS a bind
« Odpověď #8 kdy: 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ýš.