🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #881

Re: Przyjemny, elegancki, prosty jezyk funkcyjny

#881
From: Michał Przybyłek
Date: Wed, 16 May 2007 09:32
75 lines
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-mail
References: <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