» »

Programski jezik Lisp

Programski jezik Lisp

Terminator ::

Zna kdo napisati v Lisp-u funkcijo,ki vrne dolžino seznama?

LadyKate ::

mislim, da je tako:

( defun dolzina_seznama(seznam)
( cond
;;ce je seznam prazen vrnemo 0
((null seznam) 0)
;; drugace je dolzina enaka 1+dolzina repa
(t (+1 (dolzina_seznama(cdr(seznam)))))
)
)


Lp, LadyKate

house ::

A bi kdo znal v lispu napisati funkcijo, ki opravi razliko dveh seznamov, recimo:

(razlika '(a b c d) '(b d f g)) = (a c)

OwcA ::

(defun diff-list (a b &optional result)
    (if (null a) result 
        (diff-list (cdr a) b (if (member? (car a) b) result (cons (car a) result)))))
    
(defun member? (a l)
    (cond
        ((null l) nil)
        ((eql a (car l)) t)
        (t (member? a (cdr l)))))
Otroška radovednost - gonilo napredka.

WarpedGone ::

owca: respect
Zbogom in hvala za vse ribe

64202 ::

Offtopic, ampak dober štos: Heker je nekega dne vdrl v vojaški sistem in mu je uspelo spizditi zadnjih 100 strani lisp kode za nek zelo kompliciran sistem. Težava - bili so sami zaklepaji.
I am NaN, I am a free man!

lukanium ::

Še en offtopic, se opravičujem... samo je res smešno. :)

Iz Wikipedie (med drugim seveda) o sintaksi Lispa:
... The heavy use of parentheses in S-expressions has been criticized – some joke acronyms for Lisp are "Lots of Irritating Superfluous Parentheses", "Lets Insert Some Parentheses", or "Long Irritating Series of Parentheses" ... :D
When a person can no longer laugh at himself,
it is time for others to laugh at him. [Thomas Szasz]

desperados ::

ja ja programski jeziki stari dobri cajti:)

edina stvar ki sem jo pozabil čez noč -> lisp

upirna ::

Pa zakaj se Lisp sploh uporablja(se mi ne da googlat)?
[to sporočilo bo spremenil upirna, kadar bo to njemu pasalo]

Zgodovina sprememb…

  • spremenil: upirna ()

NoUse4AName ::

Priporočam da si preberete tole, kot tudi njegove ostale eseje.

OwcA ::

Zakaj Lisp? Recimo zato:
hours (compared to a range of 2 to 8.5 hours for the other Lisp programmers in the study, 3 to 25 for C/C++ and 4 to 63 for Java) and I ended up with 45 non-comment non-blank lines (compared with a range of 51 to 182 for Lisp, and 107 to 614 for the other languages). (That means that some Java programmer was spending 13 lines and 84 minutes to provide the functionality of each line of my Lisp program.)


Enostavno je to najmočnejši programski jezik.
Otroška radovednost - gonilo napredka.

64202 ::

lisp ma dobre kompajlerje (za razliko od pythona), ampak nobenih knjižnic (za razliko od pythona :D)
I am NaN, I am a free man!

ql000 ::

@NoUse4AName: tipo je legenda!

Sergio ::

OwcA: Lisp je tocno tok 'mocan' kot ASM za Motorolo HC11 :D.

Ce si pa nasel en problem, v katerem ti Lisp dela bolje, good for you. :)

Ce ze isces programski jezik kjer moras paziti na razliko med deklerativnim in semanticnim pomenom, se igraj s Prologom.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

OwcA ::

Moč je bila mišljena v smislu izrazne moči v rokah človeka, programerja, ampak saj oba veva, da sva se že prej kristalno jasno razumela. ;)

Res ne vem zakaj bi raje posegel po Prologu, večino kar napišem v Lispu je čisto funkcijsko programiranje ob izdatni uporabi makrov, Prolog ne podpira ne enega, ne drugega.
Otroška radovednost - gonilo napredka.

64202 ::

Prolog podpira higher-order "funkcije", en preprost primer kako spravit "kodo" v spremenljivko vred s curryingom.

adder(X, Y): Y = plus(X).

?- adder(5, A), apply(A, [2, Y]).

A = plus(5)
Y = 7

Yes
?-

Higher-order logic programming in Prolog - Naish (ResearchIndex)

Je pa res, da sem tole sprobal na swi prologu, glede na članek prolog včasih ni imel apply, ampak bolj omejen call.
I am NaN, I am a free man!

64202 ::

Evo še en malo bolj resen prikaz, kaj lahko počnes v prologu, razbiješ en "izraz" na klic + parametre in se potem poljubno špilaš:

gu(A,B,C,D) :- D is A+B+C.
gu2(A,X) :- X = gu(A).

?- gu2(5, X), X=..[Y|P], Z=..[Y,3|P], apply(Z, [2, Q]).

X = gu(5)
Y = gu
P = [5]
Z = gu(3, 5)
Q = 10

Yes
?-
I am NaN, I am a free man!

OwcA ::

Luštno!
Za applay res nisem vedel.
Otroška radovednost - gonilo napredka.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Odpiranje Symbiana se je začelo (strani: 1 2 )

Oddelek: Novice / Nokia / Symbian
698197 (5488) jype
»

Programski jezik D tudi za Mace

Oddelek: Novice / Ostala programska oprema
133623 (2289) hamax
»

Znati programirati?!

Oddelek: Programiranje
81884 (1549) 64202
»

[C++] Program, ki se popravi, prevede ter ponovno zažene

Oddelek: Programiranje
162176 (1974) OwcA

Več podobnih tem