Article View: pl.comp.lang.funkcyjne
Article #891Re: Przyjemny, elegancki, prosty jezyk funkcyjny
From: Marcin 'Qrczak' Kowalczyk
Date: Sat, 19 May 2007 12:17
Date: Sat, 19 May 2007 12:17
61 lines
4395 bytes
4395 bytes
Dnia 19-05-2007, So o godzinie 11:59 +0200, Michał Przybyłek napisał(a):
> 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.
Niespójność polega na tym, że jedne funkcje są dostępne w środowisku
funkcyjnym, a inne - w środowisku zwykłych wartości.
To jest poboczny temat. Zaczęło się od mnogości nawiasów, która irytuje
mnie bardziej niż #' i funcall/apply.
> > 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.
Wystarczy, że istnieją takie konteksty, żeby była konieczność jawnego
importowania z jednej przestrzeni nazw do innej. Jawne importowanie jest
dla mnie wadą, bo każe programiście rozróżniać sytuacje, które mogą być
z powodzeniem traktowane jako to samo.
> Nie traktuj dodatkowej ilości kodu jako zło, z którym trzeba walczyć,
> a jako przydatne komentarze.
Dla mnie nieprzydatne. To, że dane słowo oznacza funkcję, nie jest tak
ważną informacją, żeby zmuszać programistę do jawnego zaznaczania tego
w każdym miejscu, w którym jest użyte.
W Perlu jest osobna przestrzeń nazw dla skalarów, osobna dla tablic,
osobna dla słowników, osobna dla funkcji i osobna dla uchwytów
wejścia-wyjścia. Też trzeba owinąć wszystko w skalar za pomocą jawnej
operacji, żeby przekazać obiekt pośrednio, a potem odwinąć w miejscu
użycia. To mi się nie podoba tak samo jak w Lispie. Tego też będziesz
bronił? Jeśli nie, to dlaczego chcesz wyróżniać funkcje, a nie chcesz
wyróżniać tablic? Przecież tablice też są szczególnymi wartościami:
tylko tablice są indeksowane.
> >> 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 ?
Mogę się zgodzić, że jest first class, więc mogłyby też być w tej samej
przestrzeni nazw. Przekazywanie etykiet pośrednio jest zapewne tak
rzadkie, że to, czy są w tej samej przestrzeni nazw, nie ma dużego
znaczenia praktycznego i nie będę tutaj naciskał w żadną stronę.
--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID:
<1179577062.20571.28.camel@qrnik>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-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> <f2ldb0$nun$1@atlantis.news.tpi.pl> <1179534794.18262.35.camel@qrnik> <f2mhpe$fpb$1@atlantis.news.tpi.pl>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: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> Newsgroups: pl.comp.lang.funkcyjne Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny Date: Sat, 19 May 2007 14:17:42 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 92 Message-ID: <1179577062.20571.28.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> <1179528669.15951.26.camel@qrnik> <f2ldb0$nun$1@atlantis.news.tpi.pl> <1179534794.18262.35.camel@qrnik> <f2mhpe$fpb$1@atlantis.news.tpi.pl> NNTP-Posting-Host: paf87.warszawa.sdi.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1179577110 16187 217.96.225.87 (19 May 2007 12:18:30 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Sat, 19 May 2007 12:18:30 +0000 (UTC) In-Reply-To: <f2mhpe$fpb$1@atlantis.news.tpi.pl> X-Mailer: Evolution 2.10.0 PLD Linux Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit