Article View: pl.comp.lang.funkcyjne
Article #886Re: Przyjemny, elegancki, prosty jezyk funkcyjny
From: Marcin 'Qrczak' Kowalczyk
Date: Fri, 18 May 2007 22:51
Date: Fri, 18 May 2007 22:51
60 lines
3829 bytes
3829 bytes
Dnia 18-05-2007, pią o godzinie 00:59 +0200, Michał Przybyłek
napisał(a):
> > W dodatku Common Lisp rozróżnia wyrażenia, które są do siebie bardziej
> > podobne niż np. wzięcie wielkości tablicy jest podobne do definicji
> > lokalnej zmiennej - a mianowicie aplikację globalnej funkcji i aplikację
> > funkcji przekazanej jako parametr:
> > (f x)
> > (funcall f x)
>
> To jest nieprawda. Rozróżnienie dotyczy tego, w której przestrzeni nazw
> siedzi dany symbol, a nie czy funkcja jest globalna, czy nie.
To nie przeczy temu, co napisałem. Globalna funkcja siedzi w przestrzeni
nazw funkcji. Parametr funkcji siedzi w przestrzeni nazw zmiennych.
Opisałem praktyczny skutek, a nie mechanizm.
> Nie rozumiem w ogóle dlaczego miałyby być brane z tej samej przestrzeni,
Bo funkcja jest szczególnym przypadkiem wartości. Nie jest odrębnym
bytem, który wartością nie jest. Nazwana funkcja bywa przekazywana jak
inne wartości, a wartości bywają aplikowane jako funkcje (bez statycznej
wiedzy o tym, czy są funkcjami).
> ani dlaczego to miałoby być to "bardziej spójne".
Użyłem argumentu spójności dlatego, że Ty go wcześniej użyłeś odnośnie
składni, a więc powinieneś uważać spójność za ważną.
> I, zresztą, ułatwia to pisanie kodu utrudniając przypadkowy clash
> różnych konceptów. Gdyby wszystko siedziało w jednej przestrzeni nie
> mógłbyś mieć żadnych dwóch z następujących rzeczy:
>
> - typu "list",
> - konstruktora listy "list"
> - zmiennej lokalnej przekazanej jako "list" (dokładniej, nei było by to
> dobrym pomysłem i tak jak w innych językach używałbyś nazw typu "ls",
> zamiast "list", "len" zamiast "length" itp.).
Jak wiesz, do rozwiązywania tego problemu stosuję konwencję wielkości
liter: LIST, List, list. Nie potrzeba więc osobnych przestrzeni nazw.
> Zauważ też, że rozgraniczenie przestrzeni nazw jest spotykane w wielu
> (w większości) językach programowania.
Moim zdaniem oba rozwiązania mają podobną popularność. Wspólna
przestrzeń nazw dla zmiennych i funkcji jest szczególnie sensowna
w języku, który ułatwia przekazywanie funkcji i aplikację ich pośrednio,
a więc tam, gdzie to ma sens semantycznie.
Funkcje i zmienne w tej samej przestrzeni nazw:
- C, C++, Haskell, JavaScript, Python, OCaml, Scheme, SML
Funkcje i zmienne w różnych przestrzeniach nazw:
- C#, Common Lisp, Java, Perl, Prolog, Ruby, Smalltalk
--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID:
<1179528669.15951.26.camel@qrnik>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.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> <f2ej9b$f4k$1@nemesis.news.tpi.pl> <1179352200.4321.8.camel@qrnik> <f2igt8$2j$1@atlantis.news.tpi.pl> <1179440766.31265.21.camel@qrnik> <f2imn9$iig$1@atlantis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> Newsgroups: pl.comp.lang.funkcyjne Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny Date: Sat, 19 May 2007 00:51:10 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 82 Message-ID: <1179528669.15951.26.camel@qrnik> References: <1179163778.661628.303210@h2g2000hsg.googlegroups.com> <f2ak3b$rpj$1@nemesis.news.tpi.pl> <1179268422.157417.102270@o5g2000hsb.googlegroups.com> <f2ej9b$f4k$1@nemesis.news.tpi.pl> <1179352200.4321.8.camel@qrnik> <f2igt8$2j$1@atlantis.news.tpi.pl> <1179440766.31265.21.camel@qrnik> <f2imn9$iig$1@atlantis.news.tpi.pl> NNTP-Posting-Host: paf87.warszawa.sdi.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1179528965 12341 217.96.225.87 (18 May 2007 22:56:05 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Fri, 18 May 2007 22:56:05 +0000 (UTC) In-Reply-To: <f2imn9$iig$1@atlantis.news.tpi.pl> X-Mailer: Evolution 2.10.0 PLD Linux Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit