Funkcionální programátor

čumil

Re:Funkcionální programátor
« Odpověď #45 kdy: 29. 06. 2015, 15:24:28 »
ALE proboha, tím neříkám že je Haskell špatný, osobně je to v aktuální chvíli můj nejoblíbenější jazyk (lepší ehm, zatím není). Pouze autoři tak trošku lžou.


v

Re:Funkcionální programátor
« Odpověď #46 kdy: 29. 06. 2015, 15:25:36 »
Citace od: čumil kdy 29. 06. 2015, 15:22:35
Citace od: v kdy 29. 06. 2015, 15:20:33
Citace od: čumil kdy 29. 06. 2015, 15:11:53
Citace od: JSH kdy 29. 06. 2015, 14:45:13
Citace od: Kit kdy 29. 06. 2015, 14:30:26
Povídej, co z toho PHP neumí.
Koukal jsem a z FP toho umí celkem dost. :) Uzávěry, funkce jako plnotučné entity, částečná aplikace by se tam taky nějak dala spáchat. Akorát ty vedlejší efekty si musím hlídat. :(
systém částečné nečistoty

tím myslíte Control.Monad.ST?
Tím myslím celou IO monádu ...

i čistě funkcionální jazyk potřebuje vstup a výstup, jak byste to řešil vy?

čumil

Re:Funkcionální programátor
« Odpověď #47 kdy: 29. 06. 2015, 15:34:49 »
Citace od: v kdy 29. 06. 2015, 15:25:36
Citace od: čumil kdy 29. 06. 2015, 15:22:35
Citace od: v kdy 29. 06. 2015, 15:20:33
Citace od: čumil kdy 29. 06. 2015, 15:11:53
Citace od: JSH kdy 29. 06. 2015, 14:45:13
Citace od: Kit kdy 29. 06. 2015, 14:30:26
Povídej, co z toho PHP neumí.
Koukal jsem a z FP toho umí celkem dost. :) Uzávěry, funkce jako plnotučné entity, částečná aplikace by se tam taky nějak dala spáchat. Akorát ty vedlejší efekty si musím hlídat. :(
systém částečné nečistoty

tím myslíte Control.Monad.ST?
Tím myslím celou IO monádu ...

i čistě funkcionální jazyk potřebuje vstup a výstup, jak byste to řešil vy?
Nooo, zkusil bych se dát na ZEN.

Blbej vtip ...

Ve zkratce. Uniqueness typing. Používá ho Clean a ještě jedna potvora. Bohužel, obědvě potvory jsou bez komunity (větší), a bez prostředí (které tvoří komunita), takže jsou bohužel k nepotřebě. Kdyby nebyl Haskell, je dost možné, že by to bylo jinak, protože by měli komunitu starající se o jejich vývoj. Ale Haskell je prostě good enough, zatím.

Další metoda, zkombinování reaktivního paradigmatu s FP, geniální a jednoduché. Opět stejný problém jako u minulé metody. Existuje pouze jeden jediný FRP jazyk o kterým vím, a je to bohužel nedodělaná hračka.

A ještě jedna metoda. Využívá lazy evaluation. Prostě jako vstup vezmeme nekonečný list zpráv, a program posílá běhovému prostědí nekonečný list odpovědí. Hezké, ale žádný jazyk to dosud nevyzkoušel, lze ale na tento nápad narazit na internetu když člověk hledá.

JSH

Re:Funkcionální programátor
« Odpověď #48 kdy: 29. 06. 2015, 15:39:46 »
Citace od: čumil kdy 29. 06. 2015, 15:22:35
Tím myslím celou IO monádu ...
Ale IO monad je čistě funkcionální. Vždyť je to jen syntaktický cukříček nad tím, že každá io funkce bere RealWorld a vrací jeho novou verzi. No a pokud je svět kolem tebe vždy zničen a vytvořen nový, tak to vypadá jako by existovaly nějaké vedlejší efekty. Samozřejmě je to pouze iluze 8)

A teď bez zadeke. Každý jazyk který má být k něčemu dobrý musí umět vedlejší efekty. Prostě proto, že modifikace okolí je obvyklá úloha SW. Tvrdit, že nejaký jazyk není úplně čistý je to samé jako tvrdit, že není úplně nepoužitelný.

JSH

Re:Funkcionální programátor
« Odpověď #49 kdy: 29. 06. 2015, 15:42:09 »
Citace od: JSH kdy 29. 06. 2015, 15:39:46
A teď bez zadeke.
WTF :o CenzorBot? Si někdo dělá perdel, ne?


Radek Miček

Re:Funkcionální programátor
« Odpověď #50 kdy: 29. 06. 2015, 15:44:51 »
Citace od: čumil kdy 29. 06. 2015, 15:24:28
ALE proboha, tím neříkám že je Haskell špatný, osobně je to v aktuální chvíli můj nejoblíbenější jazyk (lepší ehm, zatím není). Pouze autoři tak trošku lžou.

Autoři nelžou, jen zřejmě používají jinou definici než vy.

Například s následující definicí ,,výraz e je referenčně transparentní, pokud mohu v každém programu nahradit libovolné výskyty e hodnotou e a chování programu se nezmění. " dostanete, že výrazy v Haskellu (kromě výrazů používajících unsafePerformIO apod.) jsou referenčně transparentní včetně výrazů typu IO x pro nějaké x.

čumil

Re:Funkcionální programátor
« Odpověď #51 kdy: 29. 06. 2015, 15:45:32 »
Citace od: JSH kdy 29. 06. 2015, 15:39:46
Citace od: čumil kdy 29. 06. 2015, 15:22:35
Tím myslím celou IO monádu ...
Ale IO monad je čistě funkcionální. Vždyť je to jen syntaktický cukříček nad tím, že každá io funkce bere RealWorld a vrací jeho novou verzi. No a pokud je svět kolem tebe vždy zničen a vytvořen nový, tak to vypadá jako by existovaly nějaké vedlejší efekty. Samozřejmě je to pouze iluze 8)

A teď bez zadeke. Každý jazyk který má být k něčemu dobrý musí umět vedlejší efekty. Prostě proto, že modifikace okolí je obvyklá úloha SW. Tvrdit, že nejaký jazyk není úplně čistý je to samé jako tvrdit, že není úplně nepoužitelný.
Taaakže, pro skutečně čisté metody IO si přečti můj komentář přesně nad tím tvým.

Tak, a až si to dočteš, odpověz mi na jednu maličkatou otázku. Funkcionální jazyk neumožňuje race condition. Souhlasíš s mým tvrzením?

čumil

Re:Funkcionální programátor
« Odpověď #52 kdy: 29. 06. 2015, 15:46:26 »
Citace od: JSH kdy 29. 06. 2015, 15:42:09
Citace od: JSH kdy 29. 06. 2015, 15:39:46
A teď bez zadeke.
WTF :o CenzorBot? Si někdo dělá perdel, ne?
Jo, je tady, ale kurva, ještě ho musej zlepšit ...

Radek Miček

Re:Funkcionální programátor
« Odpověď #53 kdy: 29. 06. 2015, 15:49:21 »
Citace od: čumil kdy 29. 06. 2015, 15:45:32
Tak, a až si to dočteš, odpověz mi na jednu maličkatou otázku. Funkcionální jazyk neumožňuje race condition. Souhlasíš s mým tvrzením?

Nesouhlasím, IMO vůbec to s tím nesouvisí.

čumil

Re:Funkcionální programátor
« Odpověď #54 kdy: 29. 06. 2015, 15:50:27 »
Citace od: Radek Miček kdy 29. 06. 2015, 15:44:51
Citace od: čumil kdy 29. 06. 2015, 15:24:28
ALE proboha, tím neříkám že je Haskell špatný, osobně je to v aktuální chvíli můj nejoblíbenější jazyk (lepší ehm, zatím není). Pouze autoři tak trošku lžou.

Autoři nelžou, jen zřejmě používají jinou definici než vy.

Například s následující definicí ,,výraz e je referenčně transparentní, pokud mohu v každém programu nahradit libovolné výskyty e hodnotou e a chování programu se nezmění. " dostanete, že výrazy v Haskellu (kromě výrazů používajících unsafePerformIO apod.) jsou referenčně transparentní včetně výrazů typu IO x pro nějaké x.
Ne ... už jsem UNAVENÝ z vysvětlování tadytoho, fakt, idioti, akorát rozšířili další dezinformaci o FP. Než začneš kecat něco o mí definici FP, přečti si v mých komentářích moji definici, a zjistíš, že je stejná jako je definice matematické funkce (tj. funkcionálního jazyka).

v

Re:Funkcionální programátor
« Odpověď #55 kdy: 29. 06. 2015, 15:51:25 »
Citace od: čumil kdy 29. 06. 2015, 15:34:49
Uniqueness typing.

nemám nastudováno, pokusím se to napravit

Citace od: čumil kdy 29. 06. 2015, 15:34:49
A ještě jedna metoda. Využívá lazy evaluation. Prostě jako vstup vezmeme nekonečný list zpráv, a program posílá běhovému prostědí nekonečný list odpovědí. Hezké, ale žádný jazyk to dosud nevyzkoušel, lze ale na tento nápad narazit na internetu když člověk hledá.
myslím, že jsem na to narazil v sekci 7 paperu "History of Haskell: Being Lazy With Class", zmiňuje i Uniqueness typing

za sebe bych řekl, že Haskell je "pure", nemonadické funkce čisté jsou, monadické funkce dávají stejný výsledek ve stejném "prostředí" a se stejnými argumenty

čumil

Re:Funkcionální programátor
« Odpověď #56 kdy: 29. 06. 2015, 15:54:16 »
Citace od: Radek Miček kdy 29. 06. 2015, 15:49:21
Citace od: čumil kdy 29. 06. 2015, 15:45:32
Tak, a až si to dočteš, odpověz mi na jednu maličkatou otázku. Funkcionální jazyk neumožňuje race condition. Souhlasíš s mým tvrzením?

Nesouhlasím, IMO vůbec to s tím nesouvisí.
Naneštěstí souvisí. Promiň, ale nechápeš o co vlastně ve FP jde. Další diskuze je bohužel s tebou nemožna :(

D O P R D E L E
Ve FP nemůže být race condition, když jsou všechny data persistentní, a žádná funkce nemá side efekty kurva už !!!

A Haskell ? Pomocí "čistého" IO se dělá race condition jedna báseň ...

Radek Miček

Re:Funkcionální programátor
« Odpověď #57 kdy: 29. 06. 2015, 15:54:32 »
Citace od: čumil kdy 29. 06. 2015, 15:50:27
Než začneš kecat něco o mí definici FP, přečti si v mých komentářích moji definici, a zjistíš, že je stejná jako je definice matematické funkce (tj. funkcionálního jazyka).

Pak tu definici zřejmě jen špatně používáte. Už jsme to mj. řešili v diskuzi na AbcLinuxu.

v

Re:Funkcionální programátor
« Odpověď #58 kdy: 29. 06. 2015, 15:55:46 »
Citace od: čumil kdy 29. 06. 2015, 15:54:16
Citace od: Radek Miček kdy 29. 06. 2015, 15:49:21
Citace od: čumil kdy 29. 06. 2015, 15:45:32
Tak, a až si to dočteš, odpověz mi na jednu maličkatou otázku. Funkcionální jazyk neumožňuje race condition. Souhlasíš s mým tvrzením?

Nesouhlasím, IMO vůbec to s tím nesouvisí.
Naneštěstí souvisí. Promiň, ale nechápeš o co vlastně ve FP jde. Další diskuze je bohužel s tebou nemožna :(

D O P R D E L E
Ve FP nemůže být race condition, když jsou všechny data persistentní, a žádná funkce nemá side efekty kurva už !!!

A Haskell ? Pomocí "čistého" IO se dělá race condition jedna báseň ...

který systém vstupu/výstupu zamezuje vzniku race condition? IMHO to nelze

Radek Miček

Re:Funkcionální programátor
« Odpověď #59 kdy: 29. 06. 2015, 15:59:22 »
Citace od: čumil kdy 29. 06. 2015, 15:54:16
D O P R D E L E
Ve FP nemůže být race condition, když jsou všechny data persistentní, a žádná funkce nemá side efekty kurva už !!!

Race condition mohu dělat i pomocí data Write = Write Int - stačí vzít vhodný interpretr, co při interpretaci Write 1 a Write 2 udělá race condition. Samotné Write 1 však žádný vedlejší efekt nedělá. Haskell je podobný - IO žádný vedlejší efekt nedělá, dělá to až jakýsi interpretr - ale k němu nemáte v jazyce přístup - v tom je celý vtip.