cwbe coordinatez:
101
63540
2076399
3671716
8491793

ABSOLUT
KYBERIA
permissions
you: r,
system: public
net: yes

neurons

stats|by_visit|by_K
source
tiamat
K|my_K|given_K
last
commanders
polls

total descendants::2
total children::1
show[ 2 | 3] flat


Prečo zaraďujete lisp medzi neprocedurálne jazyky?

Ja to vnímam tak že najrozšírenejšie lispové dialekty Common Lisp aj Scheme sú procedurálne a možno voliteľne využiť funkcionálne konštrukcie (ale tie má aj Python, napríklad).

Ešte chlapča nevyrástlo, baby, berme ho!




000001010006354002076399036717160849179308785200
hexo
 hexo      16.09.2020 - 15:41:33 , level: 1, UP   NEW
tiez si myslim, ze to s naozaj funkcionalnym programovanim vela nema. je v nom ale vela inych veci, ktore ho robia specialnym. vsetky programy co som v tom zatial videl (nebolo ich az tak vela zas) boli silne proceduralne.

rovnako mi pride, ze funkcia ako "first-class" citizen prosto nestaci. musis mat zvysne veci z lambda calculu. ziadne tupe vynimky a la OCaml, ktore dlho nemalo ani operator zretazenia funkcii (bodka z haskellu), hlavne ze ma objekty :D
dobre ze si okrajovo spomenul python, ten som zvykol hodne pouzivat na mix proceduralne-objektoveho pristupu a "funkcionalnych" veci ako je map, reduce, zip a tak. jedna z veci, ktora mi tam ale neskutocne chybala je ciastocna aplikacia funkcie a curry-uncurry (to sa da kus emulovat). da sa na to odpovedat ze kniznica ponuka "partial". to je ale fakt zle pouzitelne

00000101000635400207639903671716084917930878520008795709
aarin
 aarin      17.10.2020 - 09:43:30 (modif: 17.10.2020 - 09:52:04), level: 2, UP   NEW !!CONTENT CHANGED!!
toto je velmi dobra odpoved :) ale zaujimalo by ma, co si myslel tymi vynimkami a la OCaml. ja ten jazyk vobec nepoznam, preto sa pytam.

ja pouzivam iba haskell a racket, oba su velmi ine, ale napriek tomu povazujem racket za funkcionalny programovaci jazyk [v o dost slabsom vyzname].

no a tomu chcem spravit trochu reklamu:

je to dialekt lispu, ktory je navazeny skor na fp stranu (cons je immutable - toto znamena vela - e: tu je vysvetlena logika za tym), ale oproti haskelu nema trackovanie efektov, cize viem robit nepure funkcie o ktorych sa to nedozviem inak ako citanim zdrojaku. neratam referencne netransparentne funkcie ako accursedUnutterablePerformIO co ma haskell :) v tomto ohlade je racket slabsi.

ale co je na nom super je, ze napr tu kompoziciu funkcii co spominas:


(.) :: (b -> c) -> (a -> b) -> a -> c


si velmi lahko do toho jazyka pomocou makier vies dorobit bez cakania na novu verziu [makra preto, ze si vies vytvorit syntax aku chces, nemusi to byt (. fb fa)]. rovnako definovanie curried funkcii, lazyness, atd.

rozpisal som sa, lebo prokrastinujem. chapem ze to vyzera byt trochu odveci :)