Article View: pl.comp.lang.funkcyjne
Article #887Re: Przyjemny, elegancki, prosty jezyk funkcyjny
From: Michał Przybyłek
Date: Fri, 18 May 2007 23:37
Date: Fri, 18 May 2007 23:37
58 lines
3319 bytes
3319 bytes
Marcin 'Qrczak' Kowalczyk 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. Napisałeś nieprawdę: (defun foo () nil) (defvar *foo* #'foo) Powyżej zdefiniowana jest jedna globalna funkcja (w pustym środowisku zewnętrznym) i może być ona wołana zarówno: (foo) jak i: (funcall *foo*) Dlatego, bo rozróżnienie _nie_ jest po globalności/lokalności danej funkcji, a po środowisku, w którym siedzi zmienna odnosząca się do niej. Zgadzam się, że gdyby było tak jak to napisałeś, to byłoby niespójnie i bezsensownie. >> 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. Klasa też jest szczególnym przypadkiem wartości. Kontynuacja też. Co z tego ? Rozróżnienie nie jest po _wartości_ danego obiektu, a po sposobie jego użycia. Funkcje używa się inaczej niż zwykłe wartości, inaczej niż wartości będące typami i inaczej niż wartości będące kontynuacjami. Skoro są używane w różnych kontekstach, to nie widzę dlaczego miałoby być "logiczniej" trzymać to wszystko w jednym środowisku. To jest raczej kwestia wygody a nie "logiczności", czy "spójności". I jedni uważają, że tak jest wygodnie, inni, że inaczej. BTW, czy np. etykiety dla "goto", też powinny siedzieć w tej samej przestrzeni co pozostałe rzeczy ? mp
Technical Details
Message-ID:
<f2ldb0$nun$1@atlantis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.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> <1179528669.15951.26.camel@qrnik>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.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: Sat, 19 May 2007 01:37:20 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 58 Message-ID: <f2ldb0$nun$1@atlantis.news.tpi.pl> 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> <1179528669.15951.26.camel@qrnik> NNTP-Posting-Host: dlr70.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1179531424 24535 83.24.47.70 (18 May 2007 23:37:04 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Fri, 18 May 2007 23:37:04 +0000 (UTC) User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) In-Reply-To: <1179528669.15951.26.camel@qrnik> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit