mboost-dp1

Rick Hickey
- Forside
- ⟨
- Forum
- ⟨
- Nyheder
synes det ser ufatteligt neder udfra syntax
ved meste kode ka man se mindre mening eller bare det man skriver/de functioner man bruger giver en anelse mening
bare måde de skriver / prøver demonstrere hvordan koden virker giver hovedpine [x y & more] = 1 2 3 4 5 ?? hvaaaa
mmm køre det på java ? ka man ik ligeså godt bruge java så da -.- giver en smugle mere mening
ved meste kode ka man se mindre mening eller bare det man skriver/de functioner man bruger giver en anelse mening
functionel programming skrev:
(defn argcount
([] 0)
([x] 1)
([x y] 2)
([x y & more] (+ (argcount x y) (count more))))
=
-> #'user/argcount
(argcount)
-> 0
(argcount 1)
-> 1
(argcount 1 2)
-> 2
(argcount 1 2 3 4 5)
-> 5
bare måde de skriver / prøver demonstrere hvordan koden virker giver hovedpine [x y & more] = 1 2 3 4 5 ?? hvaaaa
mmm køre det på java ? ka man ik ligeså godt bruge java så da -.- giver en smugle mere mening
#1: Sproget er grundlæggende fuldstændig anderledes konstrueret end Java, C, C# og lignende. Selvom du måske ikke lige forstår det ved første øjekast, så er der ganske mange gode ideer i det. Jeg tror ikke at du kunne skrive en funktion i Java, C eller C# som kunne tælle antallet af elementer i en liste på mindre plads end den kode du har skrevet.
Jeg tror at de fleste der (som jeg selv) har beskæftiget sig med funktionelle sprog vil synes det er en spændende nyhed. Jeg håber det en dag kommer som .Net sprog. Så ville man også her kunne skrive elegante moduler til de dele af ens kode man gerne vil have parallelliseret.
Og ja.. Syntaksen er til at få kvalme af når man først præsenteres for den :)
Det går over.
Og ja.. Syntaksen er til at få kvalme af når man først præsenteres for den :)
Det går over.
#3
det er jeg 100% sikker på at jeg godt kan...
well for det første kunne jeg tælle det med list.Count eller list.Length alt efter hvad sprog og hvad de lige implementere så det er 1 linje
hvis du syntes det er snyd kunne man wel tælle det med
public int countFunction(List list){
int counter=0;
foreach(item i in list){
counter++;
}
return counter;
}
for mig at se væsentligt mindre linjer
Edit:
også alligevel er de nederste linjer vel eksempler på brug eller hvordan? forstår mig ikke helt på deres kode :P
det er jeg 100% sikker på at jeg godt kan...
well for det første kunne jeg tælle det med list.Count eller list.Length alt efter hvad sprog og hvad de lige implementere så det er 1 linje
hvis du syntes det er snyd kunne man wel tælle det med
public int countFunction(List list){
int counter=0;
foreach(item i in list){
counter++;
}
return counter;
}
for mig at se væsentligt mindre linjer
Edit:
også alligevel er de nederste linjer vel eksempler på brug eller hvordan? forstår mig ikke helt på deres kode :P
#5
Koden der er et ekempel på hvordan kode typisk ser ud i funktionsorienterede sprog. Sytaxen varierer men logikken er ofte ret meget den samme.
Gennemløb af lister sker gennem rekursive funktionskald og pattern matching.
Du kan sagtens skrive en funktion med samme logik i Java det giver bare ikke så meget mening.
Koden der er et ekempel på hvordan kode typisk ser ud i funktionsorienterede sprog. Sytaxen varierer men logikken er ofte ret meget den samme.
Gennemløb af lister sker gennem rekursive funktionskald og pattern matching.
Du kan sagtens skrive en funktion med samme logik i Java det giver bare ikke så meget mening.
LISP *kan* vistnok bruges som et funktionelt sprog som #4 nævner (hvilket er ide'en i den her sammenhæng) og det kan derfor ikke sammenlignes med C# og Java. Dog er det nu lidt svært at se, hvorfor det skulle være bedre til parallel-programmering og skalering, end eks. F# som der også er et funktionelt sprog.
Det er derudover dog lidt komisk at man vil prøve at genoplive sproget der er kendt for at have historiens værste syntax :P
Det er derudover dog lidt komisk at man vil prøve at genoplive sproget der er kendt for at have historiens værste syntax :P
ye ka godt se pointen efter jeg har kigget lidt for længe på det -.-
<?phpsrc
function argcount($arg) return count(explode(" ", $arg));
echo argcount("1 2 3 4 5");
// edit: for at værre korrekt sku det nok mere være
function argcount($arg) {
foreach(explode(" ", $arg) as $ar)
$i++;
return $i;
}
=?> 5
... vil sige er samme function på en linie .. at den så er en anelse ubruglig det så
som jeg siger i mit første indlæg så vil jeg sige ^^ giver mere mening :) da man ka tyde hva koden betyder uden sku decryptere med en manual
men det så nok bare en vanesag :p
<?phpsrc
function argcount($arg) return count(explode(" ", $arg));
echo argcount("1 2 3 4 5");
// edit: for at værre korrekt sku det nok mere være
function argcount($arg) {
foreach(explode(" ", $arg) as $ar)
$i++;
return $i;
}
=?> 5
... vil sige er samme function på en linie .. at den så er en anelse ubruglig det så
som jeg siger i mit første indlæg så vil jeg sige ^^ giver mere mening :) da man ka tyde hva koden betyder uden sku decryptere med en manual
men det så nok bare en vanesag :p
#9 Lisp er ikke kendt for at have verdens værste syntax, nærmest tvært imod. Blandt matematikere er det kendt som det eneste sprog hvori man kan fører matematisk bevisførelse for at koden opfører sig som den skal i alle tilfælde. Det kan nævnes at Mathematica bygger på et lisp inspireret sprog, dog hvor input syntaxen er lidt mere brugervenlig.
#10 Funktionelle sprog er bedre til parallel-programmering, da en given funktion ikke kan påvirkes af andet end den selv. Man kan derfor afvikle alle funktioner og deres rekursioner i seperate tråde. Ansvaret for parallelisering, kan derfor lægges over på compileren/afvikleren. (Porgammøren skal ikke tage stilling til hvad der skal opdeles og hvornår.)
Men så vidt jeg husker, så kan klassisk LISP godt definere globale variable mm. (Hvilket ødelægger konceptet lidt.)
Men så vidt jeg husker, så kan klassisk LISP godt definere globale variable mm. (Hvilket ødelægger konceptet lidt.)
SirClickAlot (4) skrev:Jeg håber det en dag kommer som .Net sprog. Så ville man også her kunne skrive elegante moduler til de dele af ens kode man gerne vil have parallelliseret.
http://www.lsharp.org/ ?
Taxwars (16) skrev:Clojure udtales "klo-djure" - hvis de ikke en gang kan udtale deres eget navn ordentlig, kan de så programmere?
Jeg gætter på du ikke har haft fransk i skolen. Der er ikke så meget tvivl om udtalen. Det engelske begreb closure er centralt i traditionel funktionel programmering.
#7:
Lambda tegnet er ikke hugget fra halflife :) det er en reference til lambda-calculus, der er det matematiske fundament for funktionel programmering.
arne_v (18) skrev:http://www.lsharp.org/ ?
Nice. Ved ikke om man skal forvente at det performer, men geek cred til ham :)
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.