Article View: pl.comp.lang.funkcyjne
Article #889Re: Przyjemny, elegancki, prosty jezyk funkcyjny
From: Michał Przybyłek
Date: Sat, 19 May 2007 09:59
Date: Sat, 19 May 2007 09:59
80 lines
4780 bytes
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-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>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