Article View: pl.comp.lang.funkcyjne
Article #885Re: Przyjemny, elegancki, prosty jezyk funkcyjny
From: Michał Przybyłek
Date: Thu, 17 May 2007 22:59
Date: Thu, 17 May 2007 22:59
45 lines
3299 bytes
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-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>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