🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Przyjemny, elegancki, prosty jezyk funkcyjny

#889
From: Michał Przybyłek
Date: Sat, 19 May 2007 09:59
80 lines
4780 bytes
Marcin 'Qrczak' Kowalczyk napisał(a):

> Tylko mi nie radź, żebym w ramach spójności wołał każdą funkcję przez
> funcall. Nie interesuje mnie takie rozwiązanie, żeby wszystkie przypadki
> były jednakowo niewygodne.

Jakiej spójności ? Przecież jest spójnie - zawsze masz ewaluację 
pierwszego argumentu w środowisku funkcyjnym, pozostałych w środowisku 
zwykłych wartości i aplikację pierwszego argumentu, który musi być 
funkcją (operatorem) do pozostałych, które muszą być zwykłymi wartościami.

Także oczywiście:

(funcall arg-f arg-1 arg-2)

Poddaje się temu schematowi. Operator "funcall" aplikowany jest do 
trzech argumentów wartościowanych w zwykłym środowisku, a wynikiem tej 
aplikacji jest sprawdzenie, czy wartość pod arg-f jest obiektem 
funkcyjnym i jeżeli tak to aplikacja tego obiektu do pozostałych argumentów.

>> 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.
> 
> Kłótnia o nazwanie kryteriów jest nieciekawa.

Nie chodzi o nazywanie kryteriów, a o zrozumienie istoty rzeczy. 
Zarzucasz, że 1000 + 1000 = 2001 jest niekonsekwencją w dodawaniu, a 
kiedy Ci pokazuje, że to nieprawda, bo 1000 + 1000 = 2000, odpierasz, że 
to nie ma znaczenia, bo liczby są tak duże, że ta jedynka na końcu nie 
robi różnicy.

> Ważne, że rozdzielenie
> tych środowisk jest mało praktyczne.

Nie jest.

>> 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,
> 
> Nieprawda. Funkcję mogę przekazać jako argument innej operacji albo
> zaaplikować do argumentów. Parametr funkcji mogę przekazać dalej jako
> argument innej operacji albo zaaplikować do argumentów.

Prawda. Funkcji używa się inaczej niż pozostałych obiektów - tylko 
funkcje są aplikowane. Oczywiście _istnieją_ też konteksty, w których 
używa się funkcji tak jak zwykłych wartości.

>> Skoro są używane w różnych kontekstach,
> 
> Ależ są używane w tych samych kontekstach. Wystarczy niepusta część
> wspólna.

Nieprawda. Kwantyfikator jest ogólny.

> Przyznaję tylko tyle, że jeden z kontekstów jest częstszy w przypadku
> funkcji, a drugi jest częstszy w przypadku innych wartości. Ta częstość
> nie jest jednak tak duża, żebym nie zauważał #' i funcalli.

Nie traktuj dodatkowej ilości kodu jako zło, z którym trzeba walczyć, a 
jako przydatne komentarze. Np. w Adzie (jednym z najbardziej czytelnych 
i najlepiej zaprojektowanych klasycznych języków) jest wiele 
dodatkowego, czegokolwiek nie wnoszącego kodu.

>> BTW, czy np. etykiety dla "goto", też powinny siedzieć w tej samej 
>> przestrzeni co pozostałe rzeczy ?
> 
> Jeśli nie są first class values, to są używane w różnych kontekstach,
> więc mogą być w różnych przestrzeniach nazw.

Co rozumiesz przez bycie "first-class" ? Czy kontynuacja łapana przez 
"return" nie jest first-class, choć mogę owinąć ją w lambdę i przekazać 
dalej ?

Bo jeżeli dla Ciebie nie jest, to powiem, że rozróżnienie jest na 
poziomie syntaktycznym i w takim razie wtóre względem samej koncepcji. 
Tzn. wtedy, to, że dana rzecz nie jest "first class" możesz sobie 
zdefiniować jako "nie siedzi w środowisku zwykłych wartości".


mp
Technical Details
Message-ID: <f2mhpe$fpb$1@atlantis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.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> <f2ldb0$nun$1@atlantis.news.tpi.pl> <1179534794.18262.35.camel@qrnik>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.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 11:59:27 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 80
Message-ID: <f2mhpe$fpb$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>  <f2ldb0$nun$1@atlantis.news.tpi.pl> <1179534794.18262.35.camel@qrnik>
NNTP-Posting-Host: dkg68.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1179568750 16171 83.24.10.68 (19 May 2007 09:59:10 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Sat, 19 May 2007 09:59:10 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.10 (Windows/20070221)
In-Reply-To: <1179534794.18262.35.camel@qrnik>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit