Funkcionális programozás

A funkcionális programozás mindig is felkeltett engem a kényszerrel szemben.
Sokszor beszélek a funkcionális programozás különböző aspektusairól a piacon lévő különböző ágazatokban.
De szeretnék összegyűjteni minden érdeklődőt ebben a témában egy ágban.
Úgy gondolom itt az ideje, hogy ilyen témát nyitjunk meg. És ezért.

Történelmileg a funkcionális programozás szinte összefüggésben állt a kényszerrel.
Fortran után a második nyelv volt a lisp.
De sajnos, a funkcionális programozás sokáig a kutatóintézetek vagy a speciális alkalmazások (mesterséges intelligencia)
Természetesen az egész világot nem szabad bolondnak tekinteni, mert a fejlődés az Algol nyelvének útján ment végbe.
Ennek egészen objektív okai voltak. A funkcionális nyelvek túl közel vannak az emberhez és túl messze a géptől.
Több tucatnyi erőforrást fogyasztanak, mint a kötelező nyelveket.
Emlékezzenek a java-ra vonatkozó követelésekre - az első kötelező nyelv egy virtuális gép és egy szemétgyűjtő által a nagyvállalatok által a főáramban.
Rettenetesen fékez, és eszik az összes memóriát, ami az. De a funkcionális nyelvek (a továbbiakban: "PO") minden nélkül kizárva egy szemétgyűjtő, egy virtuális gép.
Sokan közülük (a liszkák családja) is dinamikus, ami csak súlyosbítja a helyzetet.
Természetes, hogy több mint ötven évvel ezelőtt megjelentek, régóta vannak az idejük előtt.

Széleskörű FYA szüksége gigabájt memóriával és egy olcsó olcsó gigahertz processzorok.
Több mint 50 év telt el, mielőtt a vasnak ilyen követelmények lettek volna.
Ezúttal eljött. MOST.
Üdvözöljük a programozás új korszakában.

Összesen 5500 hozzászólás

>> Összes hozzászólás a témában: 5500; oldalak: 550; aktuális oldal: 335

Válaszolj »üzenet 2157« (Bulat Ziganshin)
___________________________


qsort [] = []
qsort (x: xs) = kisebb ++ [x] ++ nagyobb
ahol (kisebb, nagyobb) = partíció (

próbálj meg röviden írni bármely más YAP-on, sőt egy általános eljárást is :)

Partíció egy függvény (vagy nyelv egy része)?

Válasz a "2124 üzenet" -re (Max Belugin)
___________________________

Válasz a "2123 üzenet" (AVC)
___________________________


Logikusan folytasd ezt a gondolatot, és azt hiszem, ugyanabba a gyanúba fogsz jönni, ami bennem született: az FP államban "lebeg."

Az emeleten, ott van?

Válasz a "2155 üzenet" (Bulat Ziganshin)
___________________________
a gyermek gyermekkori kis nehézségektől való védelme,
Gyermek. Ezek a túlsúlyos blabby már az intézet tanulmányában :)) és még mindig védettek az angol nyelvtől a funkcionális programozásból. ))
Ez a "sparing" felsőoktatás Oroszországban.

A "2117 üzenet" (slava)
___________________________

Kíváncsi vagyok, hogyan lehet gyors sorrendbe hozni (O (N log N)) tömböket (listákat) egy funkcionális programozási nyelven?

Egy kicsit ismerős a Scheme-szel, és bevallom, nem értem pontosan, hogyan kell csinálni.

Olvasta a ostorát. ) rendezési listák egyesítésével: ugyanazon hosszúságú bemeneti adatok N listáját vesszük figyelembe. majd minden egyes listát egyesítsen egybe. ezt újra és újra megismételjük a győztesnek

általában a Haskell legrövidebb rendezési algoritmusa csak egy klasszikus:

qsort [] = []
qsort (x: xs) = kisebb ++ [x] ++ nagyobb
ahol (kisebb, nagyobb) = partíció (

próbálj meg röviden írni bármely más YAP-on, sőt egy általános eljárást is :)

Válasz a "2134 üzenet" (Geniepro)
___________________________

Válasz a "2127 üzenet" (Ruslan Bogatyrev)
___________________________

Az FP-t az "idegen" imperatív dolgoktól (általában az FP külsõ világhoz való kommunikációjához kapcsolódóan) tisztítják, ilyen koncepciót monádokként (monádok) használnak.

nevetni fogsz, de Haskell-ban ugyanaz a dolog. monádok - egy absztrakt koncepció, egyfajta konstrukciós osztály (és nem típus), amelynek működési műveletei >> = és visszatérnek, amelyek megfelelnek a monádikus törvényeknek. Az IO egyike a monádoknak, azaz. specifikus konstruktor. a Haskell felhasználója számára csak annyit jelent, hogy ez a monád következetes kihívást jelent az imperatív műveletek számára, és az elrendezése nem az ő dolgai. kezdetben ez a monád folytatásokon keresztül valósult meg, minden modern fordítóban (meglepetés, meglepetés!) egyediségtípuson keresztül valósul meg. és hatékonysággal minden rendben van, a tömbök a helyszínen frissülnek, nincs veszteség a monád használatából - a végén egy egyenes vonalú imperatív kód

> E.Huvenen, J.Seppyanen. "A Lisp világa"

Nemrég néztem át rajta. inkább primitív. módszereket adnak, de nincs funkcionális programozás szelleme

> Magyar, sajnos, a diákok számára, mint a kínaiak.

nem fognak túlélni ebben a kemény világban :) komolyan, célszerű lenne nekik különleges irodalmat * csak * angolul adni, mert ez a tudás számukra sokkal fontosabb lesz, mint az összes többi. és különösen az itt említett SICP módszeresebb és alaposabb, mint a finnek számszerűsített kiállítása. egy szó, amely a gyermek gyermekkori kis nehézségekkel szembeni védelmét jelenti, súlyos problémákat okoz az egész életen át tartó életben - ezt nem házas és gyermektelen pogrammistáként mondom:

Egy barátom megkért, hogy írjak Lisp-et.

A LISP BNF szabályai
------------------
s_expression = atom_symbol / "(" s_expression "." s_expression ")" / lista
list = "(" s_expression ")"
atomic_symbol = letter atom_part
atom_part = üres / letter atom_part / number atom_part
letter = "a" / "b" / "." / "z"
szám = "1" / "2" / "." / "9"
üres = ""

Válaszolj »üzenet 2149« (Ilya Ermakov)
___________________________

Így azt kérte, hogy a Lisp-ben indítson el egy kiinduló irodalmi irodalmat, amelyet a tanulóknak is meg lehet adni (ismételten hangsúlyozom - az átlagos képesség), hogy elkezdje ezt az irányt. Szükségünk van valami egyszerű oroszul, az angolra, sajnos, a diákoknak, akiknek kínainak kell lenniük.

A klasszikusok a Lisp fordítások között:

E.Huvenen, J.Seppyanen. "A Lisp világa"
1. kötet. Bevezetés a Lisp és funkcionális programozáshoz 15 MBT
2. kötet. Programozási módszerek és rendszerek 12 MBT

>> Összes hozzászólás a témában: 5500; oldalak: 550; aktuális oldal: 335

Idő a helyszínen: GMT mínusz 5 óra

Ha helyesírási hibát észlel ezen az oldalon, egyszerűen jelölje ki a hibát az egérrel, és nyomja meg a Ctrl + Enter billentyűt.
Előfordulhat, hogy a funkció nem működik a böngésző egyes verzióiban.

Kapcsolódó cikkek