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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
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 »
Uniqueness typing.

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

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 »
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 »
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 »
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 »
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.