🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Przyjemny, elegancki, prosty jezyk funkcyjny

#887
From: Michał Przybyłek
Date: Fri, 18 May 2007 23:37
58 lines
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-mail
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>

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