🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Przyjemny, elegancki, prosty jezyk funkcyjny

#885
From: Michał Przybyłek
Date: Thu, 17 May 2007 22:59
45 lines
3299 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. Pierwszy 
argument (tj. operator) w formie aplikacyjnej _zawsze_ brany jest z 
przestrzeni funkcyjnej, a pozostałe (tj. argumenty) z przestrzeni zmiennych.

Nie rozumiem w ogóle dlaczego miałyby być brane z tej samej przestrzeni, 
ani dlaczego to miałoby być to "bardziej spójne". W końcu tak czy 
inaczej jest asymetria pomiędzy pierwszym elementem formy, a 
pozostałymi. Są też jeszcze inne przestrzenie - np. dla punktów 
nielokalnych zmian przebiegu wykonania programu, albo dla nazw klas.

To są po prostu różne rzeczy i nie ma sensu wpakowywać ich do tego 
samego worka.

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.).


Zauważ też, że rozgraniczenie przestrzeni nazw jest spotykane w wielu (w 
większości) językach programowania. Niektóre języki stosują jeszcze 
dziwną regułę nie/kapitalizowania pierwszych liter w zależności od tego, 
jakiego konceptu dana nazwa dotyczy, lub w zależności od tego czy 
zmienna jest najbardziej zewnętrzna leksykalnie, czy nie, co zawsze mnie 
bawiło (nawet kiedyś zaproponowałem, że można by kapitalizować ostatnią 
literę nazwy w zależności od tego, czy jest najbardziej wewnętrzna 
leksykalnie, ale przeszło bez echa...).


mp
Technical Details
Message-ID: <f2imn9$iig$1@atlantis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.atman.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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.atman.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: Fri, 18 May 2007 00:59:01 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 45
Message-ID: <f2imn9$iig$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>
NNTP-Posting-Host: dkh152.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1179442729 19024 83.24.11.152 (17 May 2007 22:58:49 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Thu, 17 May 2007 22:58:49 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.10 (Windows/20070221)
In-Reply-To: <1179440766.31265.21.camel@qrnik>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit