Programovanie a modne trendy?

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #210 kdy: 03. 09. 2017, 17:57:40 »
jde samozřejmě o množinu čísel.
a ty čísla jsou konstanty?
Vysvětlení je v příspěvku výše.


Re:Programovanie a modne trendy?
« Odpověď #211 kdy: 03. 09. 2017, 18:23:39 »
a ty čísla jsou konstanty?
Konstanty jsou nulární funkce, čísla jsou konstanty, tedy to jsou nulární funkce. Co je na tom k nepochopení?

Respektive teda tohle samozřejmě není dogma. Je to jeden z možných způsobů, jak se na věci dívat. Pokud by někdo chtěl mít systém takový, že konstanty jsou žampiony a čísla jsou berušky, tak klidně může. Akorát to asi nebude úplně praktické, bude se s tím blbě pracovat a než člověk napíše nějaký článek, utratí spoustu peněz za LSD.


v

Re:Programovanie a modne trendy?
« Odpověď #212 kdy: 03. 09. 2017, 18:53:31 »
a ty čísla jsou konstanty?
Konstanty jsou nulární funkce, čísla jsou konstanty, tedy to jsou nulární funkce. Co je na tom k nepochopení?
nepasuje mi to na obvyklou definici funkce, zaptal jsem se na zdroj, Kit vybízí k trolování, co je na tom k nepochopení?

BoneFlute

  • *****
  • 2 084
    • Zobrazit profil
Re:Programovanie a modne trendy?
« Odpověď #213 kdy: 03. 09. 2017, 19:08:10 »
Citace
z jaké množiny je hodnota noop ?

Z mnoziny vsech procedur. Nebo chces-li presneji, z mnoziny vsech procedur typu (C) -> Int.
To není přesné. Možná to není ani správně.

BoneFlute

  • *****
  • 2 084
    • Zobrazit profil
Re:Programovanie a modne trendy?
« Odpověď #214 kdy: 03. 09. 2017, 19:16:12 »
a ty čísla jsou konstanty?
Konstanty jsou nulární funkce, čísla jsou konstanty, tedy to jsou nulární funkce. Co je na tom k nepochopení?
nepasuje mi to na obvyklou definici funkce, zaptal jsem se na zdroj, Kit vybízí k trolování, co je na tom k nepochopení?
Hodně dělá rozdíl mezi funkcemi z FP a funkcemi se sideefectem.

Zdroj neposkytnu, ale k úplně stejnému závěru jsem došel studiem Haskellem.

Pokud máš nulární funkci, která je referenčně transparentní, tak se to chová přesně tak, jak jsme zvyklí u konstant.

Mimochodem dost podobně se to dělá u Javy. Vezmeš hodnotu, zakážeš její modifikaci pomocí final static a prohlásíš to za konstantu. (Ale to už je odbočka.)


v

Re:Programovanie a modne trendy?
« Odpověď #215 kdy: 03. 09. 2017, 19:22:49 »
a ty čísla jsou konstanty?
Konstanty jsou nulární funkce, čísla jsou konstanty, tedy to jsou nulární funkce. Co je na tom k nepochopení?
nepasuje mi to na obvyklou definici funkce, zaptal jsem se na zdroj, Kit vybízí k trolování, co je na tom k nepochopení?
Hodně dělá rozdíl mezi funkcemi z FP a funkcemi se sideefectem.

Zdroj neposkytnu, ale k úplně stejnému závěru jsem došel studiem Haskellem.

Pokud máš nulární funkci, která je referenčně transparentní, tak se to chová přesně tak, jak jsme zvyklí u konstant.

Mimochodem dost podobně se to dělá u Javy. Vezmeš hodnotu, zakážeš její modifikaci pomocí final static a prohlásíš to za konstantu. (Ale to už je odbočka.)
vedlejší účinky vůbec neuvažuju, za pět, nebo kolik, let s haskellem jsem k ničemu takovému nedošel, trochu rozlišuju syntaktické prvky haskellu a matematické definice a javu bych sem raději ani netahal

BoneFlute

  • *****
  • 2 084
    • Zobrazit profil
Re:Programovanie a modne trendy?
« Odpověď #216 kdy: 03. 09. 2017, 19:29:33 »
Pokud máš nulární funkci, která je referenčně transparentní, tak se to chová přesně tak, jak jsme zvyklí u konstant.
vedlejší účinky vůbec neuvažuju, za pět, nebo kolik, let s haskellem jsem k ničemu takovému nedošel, trochu rozlišuju syntaktické prvky haskellu a matematické definice a javu bych sem raději ani netahal
V tom případě nevím, co by si rád slyšel.

Kit

Re:Programovanie a modne trendy?
« Odpověď #217 kdy: 03. 09. 2017, 19:35:09 »
Hodně dělá rozdíl mezi funkcemi z FP a funkcemi se sideefectem.

Žádné funkce by neměly mít sideeffect. Je to jen zlozvyk z jazyka C.

v

Re:Programovanie a modne trendy?
« Odpověď #218 kdy: 03. 09. 2017, 19:44:59 »
Pokud máš nulární funkci, která je referenčně transparentní, tak se to chová přesně tak, jak jsme zvyklí u konstant.
vedlejší účinky vůbec neuvažuju, za pět, nebo kolik, let s haskellem jsem k ničemu takovému nedošel, trochu rozlišuju syntaktické prvky haskellu a matematické definice a javu bych sem raději ani netahal
V tom případě nevím, co by si rád slyšel.
myslím si, že funkce by měla vypadat třeba jako f :: () -> Int (z definice), nemyslím si, že třeba g :: Int je funkce, ptám se po nějakém teoretickém vysvětlení, proč je můj dojem chybný

Re:Programovanie a modne trendy?
« Odpověď #219 kdy: 03. 09. 2017, 19:55:15 »
nemyslím si, že třeba g :: Int je funkce, ptám se po nějakém teoretickém vysvětlení, proč je můj dojem chybný
Není. Haskell (AFAIK) nemá nulární fce. Dokonce nemá žádné jiné než unární ;)

BoneFlute

  • *****
  • 2 084
    • Zobrazit profil
Re:Programovanie a modne trendy?
« Odpověď #220 kdy: 03. 09. 2017, 20:02:19 »
myslím si, že funkce by měla vypadat třeba jako f :: () -> Int (z definice)

Proč by musela? K čemu by to bylo dobré?

nemyslím si, že třeba g :: Int je funkce, ptám se po nějakém teoretickém vysvětlení, proč je můj dojem chybný

Já uvažuji takto:
Mějme nějaký element: a. Když dám tento element a do nějaké rutiny, tak si ten element ta rutina zpracuje. Nezajímá mě, zda je to 42, nebo funkce 42().

Pak mám jiný element fn x, což je element, kterej abych mohl použít, tak musím parametrizovat nějakým elementem. Buď ho do nějaké rutiny předám jako neparametrizovaný s tím, že si ho bude parametrizovat ona, nebo ho parametrizuju a teprve výsledek toho předám té rutině.

Pointa je, a v Haskellu je to hodně vidět: že funkce není nic specielního. Je to jen určitý typ elementu. A když zavolám funkci, tak ona nevrací hodnotu. Jen tím voláním vytvořím parametrizovaný element.

A Haskell pro tohle všechno má pěkné výrazy. Ale schválně jsem to opsal, aby to nemátlo a vyniklo.

Dokonce jsem uvažoval tak, že stejně jako můžeš prohlásit, že 42 je nulární funkce, tak můžeš klidně otočit, a říct, že žádná funkce, ale (fn 5) je jen parametrizovaná hodnota.
« Poslední změna: 03. 09. 2017, 20:05:07 od BoneFlute »

JSH

Re:Programovanie a modne trendy?
« Odpověď #221 kdy: 03. 09. 2017, 20:04:36 »
Pokud máš nulární funkci, která je referenčně transparentní, tak se to chová přesně tak, jak jsme zvyklí u konstant.
vedlejší účinky vůbec neuvažuju, za pět, nebo kolik, let s haskellem jsem k ničemu takovému nedošel, trochu rozlišuju syntaktické prvky haskellu a matematické definice a javu bych sem raději ani netahal
V tom případě nevím, co by si rád slyšel.
myslím si, že funkce by měla vypadat třeba jako f :: () -> Int (z definice), nemyslím si, že třeba g :: Int je funkce, ptám se po nějakém teoretickém vysvětlení, proč je můj dojem chybný
Je to hodně teoretický pohled. Vychází to z referenční transparentnosti (či jak se referential transparency překládá). Ref. tran. říká, že můžeš libovolně zaměňovat výrazy s jejich hodnotou.

Když máš nějakou funkci A->B->C->D, tak jí můžeš postupně předávat jednotlivé parametry až dojdeme od funkce s jedním parametrem k funkci s 0 parametry. Vlastní vyhodnocení funkce se může dít buď až nakonec, nebo v průběhu, kdy se vyhodnocují části pro které už je parametrů dost. A když už je jedno, kdy se to vyhodnocuje, tak můžeme udělat ještě krůček dál a to vyhodnocení zanedbat jako nepodstatný detail úplně. Stejně nevíme, jestli to je v paměti stále jako nevyhodnocený výraz, nebo už je to vyhodnocené.

ded.kenedy

Re:Programovanie a modne trendy?
« Odpověď #222 kdy: 03. 09. 2017, 20:16:47 »
Citace
To není přesné. Možná to není ani správně.

Dekuji, ze jsi to podporil argumenty.

Citace
Hodně dělá rozdíl mezi funkcemi z FP a funkcemi se sideefectem.

Pouzivat vyraz funkce v takove diskuzi je zavadejici, protoze funkce ve smyslu, prog. jazyku (procedura) nemusi skoncit, mohou mit vedlejsi efekt, atd., coz je v rozporu s ciste matematickym pristupem. Pak se v tom zacnes motat, jak se ti zrovna dari.

BoneFlute

  • *****
  • 2 084
    • Zobrazit profil
Re:Programovanie a modne trendy?
« Odpověď #223 kdy: 03. 09. 2017, 20:21:41 »
Pak se v tom zacnes motat, jak se ti zrovna dari.
Nenamahej se. Jsem vytrénovanej od Kita.

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #224 kdy: 03. 09. 2017, 21:02:09 »
Pokud máš nulární funkci, která je referenčně transparentní, tak se to chová přesně tak, jak jsme zvyklí u konstant.
vedlejší účinky vůbec neuvažuju, za pět, nebo kolik, let s haskellem jsem k ničemu takovému nedošel, trochu rozlišuju syntaktické prvky haskellu a matematické definice a javu bych sem raději ani netahal
V tom případě nevím, co by si rád slyšel.
myslím si, že funkce by měla vypadat třeba jako f :: () -> Int (z definice), nemyslím si, že třeba g :: Int je funkce, ptám se po nějakém teoretickém vysvětlení, proč je můj dojem chybný
Čistě symbolicky: množina všech n-árních funkcí z A do B je B**A**n, tedy všech nulárních B**A**0, jenže A**0 je {0}, takže dostanu B**1, což je B, takže ty množiny se podle ZFC rovnají. Pohled z algebry je v Matematických strukturách od Pultra. P.S. Co vezmu jako A je jedno, protože všechny term. objekty jsou isomorfní.