🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Przyjemny, elegancki, prosty jezyk funkcyjny

#886
From: Marcin 'Qrczak' Kowalczyk
Date: Fri, 18 May 2007 22:51
60 lines
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-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>

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