Article View: pl.comp.lang.funkcyjne
Article #881Re: Przyjemny, elegancki, prosty jezyk funkcyjny
From: Michał Przybyłek
Date: Wed, 16 May 2007 09:32
Date: Wed, 16 May 2007 09:32
75 lines
3658 bytes
3658 bytes
pawellt@gazeta.pl napisał(a):
>> O... jakbym czytał opis Common Lispu :-) Ale do nauki polecałbym raczej
>> Scheme (inny dialekt Lispu, w ostatnich latach dość popularny, właśnie
>> wychodzi R6RS).
>
> Ale te wszystkie nawiasy. Sa prawie tak samo wkurzajace jak wcięcia w
> Pythonie :)
Dlaczego ? Przynajmniej wszystko jest zuniformizowane do jednej postaci.
Patrząc na dany kawałek kodu, zawsze wiesz, że jest to aplikacja
operatora do argumentów. Nie musisz się zastanawiać nad priorytetami i
sposobem wiązań różnych dziwnych znaczków (zazwyczaj różnie przez
różnych ludzi nawiasowanych).
http://groups.google.pl/group/comp.lang.lisp/msg/6f52a3ddc61d6028?hl=pl&
> No i te operacje na listach, gdzie jednak troche moga zaciemniac te
> nieco "malo przejrzyste":
>
> ( car ( cdr ( cdr ( blabla ) ) ) )
Tak się _nie_ pisze w Lispie. Tak się pisało w Lispie z lat 50-tych. I
nawet rzadko wtedy (po pierwsze - używaj zmiennych zamiast składać
tasiemcowe wołania, po drugie - do przechowywania ustalonej liczby
elementów używaj tablic/struktur/klas - a jeżeli to powyższe jest
klasyczną operacją listową, to taki kod i tak nie działa, bo musisz
sprawdzać, czy przypadkiem po drodze lista się nie kończy, po trzecie -
powyższe równoważne jest "(caddr (bla))", po czwarte - nie piszemy
spacji pomiędzy nawiasami a wyrażeniem).
> Poza tym sama kwestia obiektowosci. W Scheme masz cos w stylu:
>
> (define samochod-class
> (make-standard-class
> 'superclass #t
> 'slots '(frame parts size)
> 'method-names '()))
???
W Common Lispie wyglądało by to tak:
(defclass samochod ()
((frame :accessor samochod-frame
:initarg :frame)
(parts :accessor samochod-parts
:initarg :parts)
(size :accessor samochod-size
:initarg :size)) )
(gdzie oczywiście definiowanie akcesorów i inicjatorów można pominąć).
Scheme nie ma ustandaryzowanego systemu obiektów, ale wiele
dostarczanych jako biblioteki. W PLT np. tak:
http://download.plt-scheme.org/doc/360/html/mzlib/mzlib-Z-H-4.html#node_chap_4
Albo z propozycji Christiana Queinneca:
http://www-spi.lip6.fr/~queinnec/WWW/Meroon.html
Albo dokładne tak jak w CL'u.
Nie obraź się, ale wydaje mi się, że większość obiekcji jakie masz do
Lispu wynikają z nieznajomości tego języka (lub przynajmniej nieobycia).
>> Chyba sobie żartujesz...
>
> Dlaczego? Chociażby kwestia definicji klas w Dylanie:
Napiszę wieczorem jak znajdę chwilkę.
mp
Technical Details
Message-ID:
<f2ej9b$f4k$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<1179163778.661628.303210@h2g2000hsg.googlegroups.com> <f2ak3b$rpj$1@nemesis.news.tpi.pl> <1179268422.157417.102270@o5g2000hsb.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: Michał Przybyłek <pummelo@hamete.pl> Newsgroups: pl.comp.lang.funkcyjne Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny Date: Wed, 16 May 2007 11:32:07 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 75 Message-ID: <f2ej9b$f4k$1@nemesis.news.tpi.pl> References: <1179163778.661628.303210@h2g2000hsg.googlegroups.com> <f2ak3b$rpj$1@nemesis.news.tpi.pl> <1179268422.157417.102270@o5g2000hsb.googlegroups.com> NNTP-Posting-Host: dli168.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1179308139 15508 83.24.38.168 (16 May 2007 09:35:39 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Wed, 16 May 2007 09:35:39 +0000 (UTC) User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) In-Reply-To: <1179268422.157417.102270@o5g2000hsb.googlegroups.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit