Sprzedaż kosmetyków


From: Adam Przybyla <adam gliwice.pl>
Subject: Re: Soft na nastepcu Hubble
Sebastian Kaliszewski <Sebastian.Kaliszewski bez.spamu.softax.pl.usun.to> wrote:
> Adam Przybyla wrote:
>> Sebastian Kaliszewski <Sebastian.Kaliszewski bez.spamu.softax.pl.usun.to>
>> wrote:
>>> Stanislaw Sidor wrote:
>>>> Przeciez za pare dekad soft napisza maszyny podlug specyfikacji
>>>> funkcjonalnej jakos tam sformalizowanej.
>>>>
>>>
>>> Tak jest dzisiaj. Program to w końcu specyfikacja funkcjonalna "jako¶
>>> tam" sformalizowana.
>>>
>>> A jak już weĽmiesz języki funkcyjne to w ogóle, ho ho!
>> ... taa, juz to widze:) Nawet MIT odstepuej w nauczaniu ze
>> Scheme w strone Pythona;-))) Bo w zalozeniach ...
>
> Scheme jest podobnie funkcyjny jak Python.
... hmm, moze ja czegos nie rozumiem, ale az tak bardzo bym tego nie laczyl.
czemu uwazasz, ze scheme nie jest funkcyjne? Bo ma elementy elementy jezyka
iteracyjnego? Kwestie efektow ubocznych ? BTW, zeby nie bylo zbyt oftopicznie
gdzies jest fajna stronka o Lispie w NASA, polecam, fajny kawalek historii.
Co prawda zniknal symulator sondy DeepSpace-4 napisany w CommonLisp ale
reszta jest na miejscu.

>
> Tu trzebaby przej¶ do rzeczy takich jak jakie¶ warianty ML (ML -- czyli Meta
> Language -- wzi±ł się wła¶nie st±d, że zauważono że wystarczaj±co dokładna
> specyfikacja jest programem)
... co nie znaczy, ze wygenerowanie z tego szybkiego programu jest
mozliwe;-) I dlatego wiekszosc dalej dlubie w pradawnym C;-)))
Poza specyficznymi tematami, ktore sa dobrze opanowane, jak np. analiza
leksykalna, gdzie taki kod moze byc bardzo szybki, o wiele lepszy
niz recznie robiony analizator. Z powazaniem
Adam Przybyla


From: jrx <alienserver_nospam_please op.pl>
Subject: Rachunek lambda
Witam,

Czy kto¶ z was może wie, gdzie można dowiedzieć się czego¶ więcej na
temat matematycznej strony języków funkcyjnych? Szperałem co nieco na
stronach haskella, ale materiały się tam znajduj±ce głównie dotycz±
praktycznych aspektów zastosowania języka. Jest może jaki¶ podręcznik do
matematyki zajmuj±cy się t± tematyk±? (Głównie interesuje mnie rachunek
lambda i monady)

Pozdrawiam,
JRX
--
JRX --> dev \dot jrx \at gmail \dot com
If the words "open source" get you more excited than
the words "free porn"...you might be a Game Developer.
Registered Linux user# 383163


From: Rudy <a.r.dabrowski_NOSPAMPLEASE_ gmail.com>
Subject: Re: Rachunek lambda
jrx wrote:

> Witam,
>
> Czy ktoś z was może wie, gdzie można dowiedzieć się czegoś więcej na
> temat matematycznej strony języków funkcyjnych? Szperałem co nieco na
> stronach haskella, ale materiały się tam znajdujące głównie dotyczą
> praktycznych aspektów zastosowania języka. Jest może jakiś podręcznik do
> matematyki zajmujący się tą tematyką? (Głównie interesuje mnie rachunek
> lambda i monady)

Na stronie lambda-the-ultimate.com jest mnĂłstwo linkĂłw. Zobacz teĹĽ tÄ™
dyskusję http://tinyurl.com/2l3bet, zadałem chyba podobne pytanie ;)

--
Andrzej 'Rudy' DÄ…browski
GG 1177403


From: Michal Przybylek <mrp neostrada.pl>
Subject: Re: Rachunek lambda
jrx napisał(a):

> Jest może jaki¶ podręcznik do
> matematyki zajmuj±cy się t± tematyk±? (Głównie interesuje mnie rachunek
> lambda i monady)

Tak.

Podstawowy (wci±ż) podręcznik to:

"Categories for the Working Mathematician" - Saunders Mac Lane

wprowadzaj±cy fundamentalne pojęcia i daj±cy podstawowe intuicje
kategoryjne.

Dalej ksi±żka Lambeka i Scott'a:

"Introduction to Higher Order Categorical Logic"

pokazuj±ca kategorie od strony logiki i teorii typów (zwi±zek pewnych
specjalnych kategorii z rachunkami lambda o typach prostych, fragmentami
logik intuicjonistycznych i teorii typów Martina-Lofa).

W końcu:

"Categorical Logic and Type Theory" - Bart Jacobs

która jest już do¶ć zaawansowan± monografi± nt. kategoryjnych uchatków,
w których naturalnie żyj± modele dla bardziej skomplikowanych rachunków
(i logik) niż te z typami prostymi (np. polimorfizm wyższego rzędu czy
typy zależne).

***

Sam± koncepcję kategoryjnych monad, do języków programowania, wprowadził
Eugenio Moggi przy opisywaniu semantyki języków funkcyjncyh w
kategoriach Kleislego. Praca jest gdzie¶ dostępna on-line, ale nie mam
teraz czasu szukać.


mp


From: Michal Przybylek <mrp neostrada.pl>
Subject: Re: Rachunek lambda
jrx napisał(a):
> Jest może jaki¶ podręcznik do
> matematyki zajmuj±cy się t± tematyk±? (Głównie interesuje mnie rachunek
> lambda i monady)

A jeżeli chodzi o sam rachunek lambda, to:

"Lectures on the Curry-Howard Isomorphism" - Pawel Urzyczyn, Morten
Heine Sorensen

i klasyka:

"The Lambda Calculus" - H. Barendregt


mp


From: jrx <alienserver_nospam_please op.pl>
Subject: Re: Rachunek lambda
Michal Przybylek wrote:
> A jeżeli chodzi o sam rachunek lambda, to:
>
> "Lectures on the Curry-Howard Isomorphism" - Pawel Urzyczyn, Morten
> Heine Sorensen
>
> i klasyka:
>
> "The Lambda Calculus" - H. Barendregt

Dzięki wielkie za tytuły, biore się do wyszukiwania

Pozdrawiam,
JRX

--
JRX --> dev \dot jrx \at gmail \dot com
If the words "open source" get you more excited than
the words "free porn"...you might be a Game Developer.
Registered Linux user# 383163


From: Piotr Sawicki <ps171721 students.mimuw.edu.pl>
Subject: Re: Rachunek lambda
jrx powiada :
> Michal Przybylek wrote:
>> A jeżeli chodzi o sam rachunek lambda, to:
>>
>> "Lectures on the Curry-Howard Isomorphism" - Pawel Urzyczyn, Morten
>> Heine Sorensen
>>
>> i klasyka:
>>
>> "The Lambda Calculus" - H. Barendregt
>
> Dzięki wielkie za tytuły, biore się do wyszukiwania

http://www.mimuw.edu.pl/~urzy/Lambda/
http://www.mimuw.edu.pl/~urzy/CHizomorfizm/


Piotr Sawicki


From: "tytan15 poczta.onet.pl" <tytan15 poczta.onet.pl>
Subject: Biblioteka boost::bind i uruchamianie =?ISO-8859-2?Q?konstruktor=F3w?= z argumentami
Mamy oto kod poniżej,
chcę by został uruchamiany konstruktor tytan(int,int)w klasie tytan w
szablonie boost::bind i nowoutworzony obiekt był zwracany to zmiennej c
typu tytan;
Proszę mnie nie pytać o zasadno¶ć takiego pytania,tylko jak da sie to zrobić
by niżej podany przykład kompilował się.
#include <boost/bind.hpp>
class tytan
{
tytan(int,int){};
};
int main()
{
tytan c=(boost::bind(&tytan,_1,_2))(1,2);//odpowiednik tytan c(1,2);
}
Kompilator wywala mnie następujace błędy:
stream.cpp: In function 'int main()':
stream.cpp:8: error: expected primary-expression before ',' token



From: pawellt gazeta.pl
Subject: =?iso-8859-2?q?Re:_Wprowadzenie_do_j=EAzyka_OCaml_-_pro=B6ba?=
> Za wszelkie wys=B3ane na maila komentarze dzi=EAki. ;)
>

Pomysl swietny!
Generalnie jest w sieci troche ciekawych materialow po polsku na temat
OCamla. M.in. dosyc obszerne wyklady tu:

http://www.ii.uni.wroc.pl/~zs/Dydaktyka/ProgFun/

i tu:

http://students.mimuw.edu.pl/~gsg/OCAML/

Polecam szczegolnie drugi link.
Moze cos z tego ci sie przyda, moze cos warto bedzie rozbudowac,
uwzglednic. Jest tez w sieci bardzo funkcjonalna wtyczka do Eclipse'a
dla OCaml'a. Jak znajde linka to podesle.

pozdr


Serwery wirtualne


From: Segmentation Fault <coredumpWYKASUJ onet.eu>
Subject: Re: Wprowadzenie do =?ISO-8859-2?Q?j=EAzyka_OCaml_-_pro=B6?=
pawellt gazeta.pl wrote:
> Moze cos z tego ci sie przyda, moze cos warto bedzie rozbudowac,
> uwzglednic. Jest tez w sieci bardzo funkcjonalna wtyczka do Eclipse'a
> dla OCaml'a. Jak znajde linka to podesle.
>
Chyba nie piszesz o tej
http://eclipsefp.sourceforge.net/ocaml/
?
bo u mnie udawało jej się tylko pod¶wietlać składnię.

Cameleon2, IDE specjalnie dla ocamla też dzi¶ jeszcze
niewiele warte (ale się rozwija)

Sprawdzałem kilka rzeczy i niestety doszedłem do wniosku,
że na razie najlepszy jest vim (albo emacs jak kto¶ woli)
+ OCamlMake + annot.

Jak znasz co¶ lepszego, to bardzo proszę o linka!


From: Daniel Janus <przesunmalpe nathell.korpus.pl>
Subject: Re: Wprowadzenie do =?iso-8859-2?Q?j=EAzyka?= OCaml -
Dnia 12.05.2007 Segmentation Fault <coredumpWYKASUJ onet.eu> napisał/a:

[FUT pl.comp.lang.funkcyjne]

> Sprawdzałem kilka rzeczy i niestety doszedłem do wniosku,
> że na razie najlepszy jest vim (albo emacs jak kto¶ woli)
> + OCamlMake + annot.

Do emacsa fajny jest tuareg-mode.

--
Daniel 'Nathell' Janus, GG #1631668, przesunmalpe nathell.korpus.pl
create_initial_thread(initial_function);
lose("CATS. CATS ARE NICE.\n");
-- Steel Bank Common Lisp, sbcl/runtime/runtime.c:425


From: pawellt gazeta.pl
Subject: =?iso-8859-2?q?Re:_Wprowadzenie_do_j=EAzyka_OCaml_-_pro=B6ba?=
> Chyba nie piszesz o tejhttp://eclipsefp.sourceforge.net/ocaml/

Gdzie tam :)
Wtyczka o kt=F3rej pisze ma autopodpowiedzi kodu, kreatora projekt=F3w,
debugger,
mozliwosc kompilowania plikow itp. Linka znajde jak odpale Linuksa na
kt=F3rym
to mam. Tutaj sa przykladowe zrzutki tego cuda :)

http://www.linux-educd.pl/images/ocaml1.jpg
http://www.linux-educd.pl/images/ocaml2.jpg


pozdr


From: pawellt gazeta.pl
Subject: Przyjemny, elegancki, prosty jezyk funkcyjny
Witam,

No wlasnie :) Szukam bardzo czytelnego, eleganckiego jezyka
funkcyjnego z
elementami obiektowosci i czesciowo mechanizmami jezykow imperatywnych
(nie tylko rekurencja). Zalzy mi zeby byl wybitnie czytelny - bo to ma
byc jezyk
do nauki dla gimnazjalisty.
Wrecz idealnym kandydatem jest Dylan (bardzo intuicyjna i prosciutka
skladnia,
szczegolnie elementy obiektowe - jak definicje klas, dziedziczenie
itp) - ale jezyk
ten praktycznie umarl. Prawie zadna ilosc bibliotek, dostepnych IDE na
Linuksa itp.
- a zalezy mi jednak zeby byl to jezyk w ktorym mozna poprogramowac
"na powaznie"
(wiadomo ze jezyk ktorego sie nauczylo na samym poczatku pamieta sie
najdluzej)

Moglibyscie cos doradzic ?


pozdrawiam


From: Tomasz bla Fortuna <bla thera.be>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
--Sig_xVkfnhZpx848.E0ExKH/lGB
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

Dnia 14 May 2007 10:29:38 -0700
pawellt gazeta.pl napisa=B3(a):

> Witam,
>=20
> No wlasnie :) Szukam bardzo czytelnego, eleganckiego jezyka
> funkcyjnego z
> elementami obiektowosci i czesciowo mechanizmami jezykow imperatywnych
> (nie tylko rekurencja). Zalzy mi zeby byl wybitnie czytelny - bo to ma
> byc jezyk
> do nauki dla gimnazjalisty.
> Wrecz idealnym kandydatem jest Dylan (bardzo intuicyjna i prosciutka
> skladnia,
> szczegolnie elementy obiektowe - jak definicje klas, dziedziczenie
> itp) - ale jezyk
> ten praktycznie umarl. Prawie zadna ilosc bibliotek, dostepnych IDE na
> Linuksa itp.
> - a zalezy mi jednak zeby byl to jezyk w ktorym mozna poprogramowac
> "na powaznie"
> (wiadomo ze jezyk ktorego sie nauczylo na samym poczatku pamieta sie
> najdluzej)
>=20
> Moglibyscie cos doradzic ?
>=20
>=20
> pozdrawiam
>=20
Francuzi do uczenia u=BFywaj=B1 Caml Light. Nie ma to obiekt=F3w. Ale tutaj
z pomoc=B1 wchodzi OCaml.

Generalnie jest czytelny. Jak na j=EAzyk funkcyjny. Ma mechanizmy
imperatywne, obiektowe te=BF. BY=A3 u=BFywany do tego celu. No na co czeka=
=E6?

IDE s=B1. Emacs ma =B3adne i eclipse ma wtyczki (kolega si=EA zdeklarowa=B3
wrzuci=E6 tutaj link zanied=B3ugo. ;d)

Jakie=B6 przyk=B3ady to mog=EA co najwy=BFej poleci=E6: bla.thera.be/ocaml
Jestem w trakcie przenoszenia tego tekstu na wikibooks.

Pozdrawiam,

--=20
Tomasz bla Fortuna
jid: bla(at)af.gliwice.pl=20
pgp: 0x90746E79 pgp.mit.edu

--Sig_xVkfnhZpx848.E0ExKH/lGB
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.3 (GNU/Linux)

iD8DBQFGSK0wT6wvGJB0bnkRAuAlAKCfSU/NkQ6bYMbvNow8EgXCkK+3iACcCVMx
swCjgcTI/0F+YFweJ9L0Orc=
=noaO
-----END PGP SIGNATURE-----

--Sig_xVkfnhZpx848.E0ExKH/lGB--


From: =?ISO-8859-2?Q?Micha=B3_Przyby=B3ek?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
pawellt gazeta.pl napisał(a):

> No wlasnie :) Szukam bardzo czytelnego, eleganckiego jezyka
> funkcyjnego z
> elementami obiektowosci i czesciowo mechanizmami jezykow imperatywnych
> (nie tylko rekurencja). Zalzy mi zeby byl wybitnie czytelny - bo to ma
> byc jezyk
> do nauki dla gimnazjalisty.

O... jakbym czytał opis Common Lispu :-) Ale do nauki polecałbym raczej
Scheme (inny dialekt Lispu, w ostatnich latach do¶ć popularny, wła¶nie
wychodzi R6RS).

Istnieje dobre ¶rodowisko dla tego języka:

http://www.plt-scheme.org

Dużo darmowych materiałów do nauki. W tym całkiem niezłe wykłady z MIT:

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures

> Wrecz idealnym kandydatem jest Dylan (bardzo intuicyjna i prosciutka
> skladnia,
> szczegolnie elementy obiektowe - jak definicje klas, dziedziczenie
> itp)

Chyba sobie żartujesz...


mp


From: pawellt gazeta.pl
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny

> O... jakbym czyta=B3 opis Common Lispu :-) Ale do nauki poleca=B3bym racz=
ej
> Scheme (inny dialekt Lispu, w ostatnich latach do=B6=E6 popularny, w=B3a=
=B6nie
> wychodzi R6RS).

Ale te wszystkie nawiasy. Sa prawie tak samo wkurzajace jak wci=EAcia w
Pythonie :)
No i te operacje na listach, gdzie jednak troche moga zaciemniac te
nieco "malo przejrzyste":

( car ( cdr ( cdr ( blabla ) ) ) )

Poza tym sama kwestia obiektowosci. W Scheme masz cos w stylu:

(define samochod-class
(make-standard-class
'superclass #t
'slots '(frame parts size)
'method-names '()))

> Chyba sobie =BFartujesz...

Dlaczego? Chocia=BFby kwestia definicji klas w Dylanie:


define class <kolor-okna> (<okno>)
end class;


..=2E. i ju=BF masz definicje klasy "kolor-okna" dziedzicz=B1c=B1 po klasie
"okno".
Chcesz to samo z atrybutuami (slotami) - wystarczy:

define class <kolor-okna> (<okno>)
slot typ_koloru;
slot kod_koloru;
end class;

Chcesz doda=E6 do powyzszego metode, wystarczy:

define method hello-world() =3D> ();
puts("Hello, world!");
end method;

Albo wygodne funkcje/metody w stylu:

define method rozmiar_buta(osoba :: <string>)
if (osoba =3D "Jasio")
14;
else
11;
end if;
end method;

Czy mo=BFna jeszcze prosciej? :) Ostatnio widzialem w sieci taki projekt
duzego sniffera
pisanego w Dylanie ( http://www.networknightvision.com/ ) to mimo =BFe
znam podstawy tego
jezyka - to rozumiem praktycznie caly kod zrodlowy wiekszosci
modulow. Nie mowie ze jestem
w stanie sprawnie w tym pisac - ale czyta sie to jak opowiadanie :)

pozdrawiam





From: =?ISO-8859-2?Q?Micha=B3_Przyby=B3ek?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
pawellt gazeta.pl napisał(a):
>> O... jakbym czytał opis Common Lispu :-) Ale do nauki polecałbym raczej
>> Scheme (inny dialekt Lispu, w ostatnich latach do¶ć popularny, wła¶nie
>> wychodzi R6RS).
>
> Ale te wszystkie nawiasy. Sa prawie tak samo wkurzajace jak wcięcia w
> Pythonie :)

Dlaczego ? Przynajmniej wszystko jest zuniformizowane do jednej postaci.
Patrz±c na dany kawałek kodu, zawsze wiesz, że jest to aplikacja
operatora do argumentów. Nie musisz się zastanawiać nad priorytetami i
sposobem wi±zań różnych dziwnych znaczków (zazwyczaj różnie przez
różnych ludzi nawiasowanych).

http://groups.google.pl/group/comp.lang.lisp/msg/6f52a3ddc61d6028?hl=pl&

> No i te operacje na listach, gdzie jednak troche moga zaciemniac te
> nieco "malo przejrzyste":
>
> ( car ( cdr ( cdr ( blabla ) ) ) )

Tak się _nie_ pisze w Lispie. Tak się pisało w Lispie z lat 50-tych. I
nawet rzadko wtedy (po pierwsze - używaj zmiennych zamiast składać
tasiemcowe wołania, po drugie - do przechowywania ustalonej liczby
elementów używaj tablic/struktur/klas - a jeżeli to powyższe jest
klasyczn± operacj± listow±, to taki kod i tak nie działa, bo musisz
sprawdzać, czy przypadkiem po drodze lista się nie kończy, po trzecie -
powyższe równoważne jest "(caddr (bla))", po czwarte - nie piszemy
spacji pomiędzy nawiasami a wyrażeniem).

> Poza tym sama kwestia obiektowosci. W Scheme masz cos w stylu:
>
> (define samochod-class
> (make-standard-class
> 'superclass #t
> 'slots '(frame parts size)
> 'method-names '()))

???

W Common Lispie wygl±dało by to tak:

(defclass samochod ()
((frame :accessor samochod-frame
:initarg :frame)
(parts :accessor samochod-parts
:initarg :parts)
(size :accessor samochod-size
:initarg :size)) )

(gdzie oczywi¶cie definiowanie akcesorów i inicjatorów można pomin±ć).

Scheme nie ma ustandaryzowanego systemu obiektów, ale wiele
dostarczanych jako biblioteki. W PLT np. tak:

http://download.plt-scheme.org/doc/360/html/mzlib/mzlib-Z-H-4.html#node_chap_4

Albo z propozycji Christiana Queinneca:

http://www-spi.lip6.fr/~queinnec/WWW/Meroon.html

Albo dokładne tak jak w CL'u.


Nie obraĽ się, ale wydaje mi się, że większo¶ć obiekcji jakie masz do
Lispu wynikaj± z nieznajomo¶ci tego języka (lub przynajmniej nieobycia).

>> Chyba sobie żartujesz...
>
> Dlaczego? Chociażby kwestia definicji klas w Dylanie:

Napiszę wieczorem jak znajdę chwilkę.


mp


From: Adam Mikuta <adammikutaWytnij gmail.wyt.nij.com>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Dnia 15.05.2007 pawellt gazeta.pl <pawellt gazeta.pl> napisał/a:

> Ale te wszystkie nawiasy. Sa prawie tak samo wkurzajace jak wcięcia w
> Pythonie :)

Wcięcia w pythonie denerwuj± tylko na pocz±tku. PóĽniej dostrzega się
więcej plusów niż minusów ;)
--
Adam "Prawda jest prosta - gdyby było inaczej
każdy głupiec mógłby j± zrozumieć".


Kosmetyki naturalne - sklep internetowy


From: Tomasz bla Fortuna <bla thera.be>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
--Sig_OGAySgXMY4BrJ9M28=15k/J
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

Dnia 15 May 2007 15:33:42 -0700
pawellt gazeta.pl napisa=B3(a):


> Poza tym sama kwestia obiektowosci. W Scheme masz cos w stylu:
>=20
> (define samochod-class
> (make-standard-class
> 'superclass #t
> 'slots '(frame parts size)
> 'method-names '()))
>=20
> Chocia=BFby kwestia definicji klas w Dylanie:
>=20
> define class <kolor-okna> (<okno>)
> end class;
>=20
> ... i ju=BF masz definicje klasy "kolor-okna" dziedzicz=B1c=B1 po klasie
> "okno".
> Chcesz to samo z atrybutuami (slotami) - wystarczy:
>=20
> define class <kolor-okna> (<okno>)
> slot typ_koloru;
> slot kod_koloru;
> end class;
>=20
> Chcesz doda=E6 do powyzszego metode, wystarczy:
>=20
> define method hello-world() =3D> ();
> puts("Hello, world!");
> end method;
>=20
No to mo=BFe przyk=B3ad w Camlu:

open Printf

class pojazd model =3D
object
val model =3D model; (* Nie zmienny po utworzeniu... *)
val mutable predkosc =3D 0; (* Musi by=E6 zainicjalizowane *)

method gaz n =3D=20
predkosc <- n;
printf "%s ma pr=EAdko=B6=E6 %d\n" model predkosc;

method stop =3D
predkosc <- 0;
printf "%s zatrzymany\n" model
end;;

(* Wykorzystanie *)
let rower =3D new pojazd "Rower";;
rower#gaz 5;;
rower#stop;;

(* Klasa dziedzicz=B1ca *)
class samochod model =3D
object
inherit pojazd ("Samoch=F3d " ^ model)

method swiatla w =3D=20
if w =3D true then=20
printf "=A6wiat=B3a w=B3=B1czone\n"
else printf "=A6wiat=B3a wy=B3=B1czone\n";

end;;

let volvo =3D new samochod "Volvo";;
volvo#swiatla true;
volvo#stop;;


> Albo wygodne funkcje/metody w stylu:
>=20
> define method rozmiar_buta(osoba :: <string>)
> if (osoba =3D "Jasio")
> 14;
> else
> 11;
> end if;
> end method;
>=20
let rozmiarButa osoba =3D
if osoba =3D "Jasio" then
14
else
11;;

print_int (rozmiarButa "Jasio")


W sumie program wy=B6wietli:
Rower ma pr=EAdko=B6=E6 5
Rower zatrzymany
=A6wiat=B3a w=B3=B1czone
Samoch=F3d Volvo zatrzymany
14

IMHO czystszy w obiektowo=B6ci i od Dylana i od Lispa. ;)

--=20
Tomasz bla Fortuna
jid: bla(at)af.gliwice.pl=20
pgp: 0x90746E79 pgp.mit.edu

--Sig_OGAySgXMY4BrJ9M28=15k/J
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.3 (GNU/Linux)

iD8DBQFGSzqYT6wvGJB0bnkRAnJZAKC9AzdZlBt9i3+xVL/TgQEwB+QU/wCfaaBs
qwlKaq7GaOQ3BmsRJm1RSgI=
=wg3C
-----END PGP SIGNATURE-----

--Sig_OGAySgXMY4BrJ9M28=15k/J--


From: Adam Przybyla <adam gliwice.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Adam Mikuta <adammikutaWytnij gmail.wyt.nij.com> wrote:
> Dnia 15.05.2007 pawellt gazeta.pl <pawellt gazeta.pl> napisał/a:
>
>> Ale te wszystkie nawiasy. Sa prawie tak samo wkurzajace jak wcięcia w
>> Pythonie :)
>
> Wcięcia w pythonie denerwuj± tylko na pocz±tku. PóĽniej dostrzega się
> więcej plusów niż minusów ;)
... BTW, podobno MIT odpuscil sobie Scheme na rzecz Pythona ...
Z powazaniem
Adam Przybyla


From: Marcin 'Qrczak' Kowalczyk <qrczak knm.org.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Dnia 16-05-2007, =C5=9Bro o godzinie 11:32 +0200, Micha=C5=82 Przyby=C5=82e=
k
napisa=C5=82(a):

> Dlaczego ? Przynajmniej wszystko jest zuniformizowane do jednej postaci.

To zmniejsza czytelno=C5=9B=C4=87, a nie zwi=C4=99ksza. Je=C5=9Bli wszystki=
e konstrukcje
wygl=C4=85daj=C4=85 podobnie, to trudniej je rozr=C3=B3=C5=BCni=C4=87 na pi=
erwszy rzut oka
i trzeba bardziej wczytywa=C4=87 si=C4=99 w s=C5=82owa.

Oczywi=C5=9Bcie przesada w drug=C4=85 stron=C4=99, kiedy ka=C5=BCda funkcja=
mia=C5=82aby w=C5=82asn=C4=85
gramatyk=C4=99 argument=C3=B3w, te=C5=BC jest z=C5=82a. Lepiej wypo=C5=9Bro=
dkowa=C4=87 i da=C4=87
charakterystyczn=C4=85 sk=C5=82adni=C4=99 podstawowym konstrukcjom.

--=20
__("< Marcin Kowalczyk
\__/ qrczak knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/


From: =?UTF-8?B?TWljaGHFgiBQcnp5YnnFgmVr?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Marcin 'Qrczak' Kowałczyk napisał(a):

>> Dlaczego ? Przynajmniej wszystko jest zuniformizowane do jednej postaci.
>
> To zmniejsza czytelność, a nie zwiększa. Jeśli wszystkie konstrukcje
> wyglądają podobnie, to trudniej je rozróżnić na pierwszy rzut oka
> i trzeba bardziej wczytywać się w słowa.

Nie. W Lispie wszystkie konstrukcje wyglÄ…dajÄ… podobnie, bo sÄ… podobne -
a nawet identyczne. Nie trzeba ich rozróżniać. Zawsze (w uproszczeniu
nieistotnym dla tej dyskusji) jest to aplikacja operatora do argumentĂłw.

To właśnie w innych językach widząc napis:

x + ++ y * * z * v >> - w == s > t

trzeba porozróżniać operatory i pokontemplować nad ich łącznością i
priorytetami, aby zrozumieć jak owy napis w ogóle sparsować. Zauważ, że
ja powyższego nie zapisałem w jakieś złośliwej konwencji, tylko w
naturalnej dla klasycznych języków formie - z wykorzystaniem niejawnego
nawiasowania wyrażeń.

Zwróć uwagę na samą filozofię wprowadzania do języka priorytetów i
wiązań. To jest dokładnie w jej duchu.


BTW, zapomniałeś odnieść się do linka, którego podałem.

mp


ps. I o ile pamiętam, to mieliśmy umowę, że nie będziesz publicznie
krytykował Lispu :-)


From: pawellt gazeta.pl
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
> Nie obra=BC si=EA, ale wydaje mi si=EA, =BFe wi=EAkszo=B6=E6 obiekcji jak=
ie masz do
> Lispu wynikaj=B1 z nieznajomo=B6ci tego j=EAzyka (lub przynajmniej nieoby=
cia).

Ja nawet nie ukrywam, =BFe znam tylko podstawy Scheme - ale powy=BFsze
konstrukcje
przewijaja sie w tutorialach dotyczacych tego jezyka ktorych sporo w
sieci.
Analogiczne sa tez w slynnej przeciez dla schemers=F3w ksiazce -
"Struktura i interpretacja programow komputerowych" (Abelson).

Inna sprawa (byc moze sie myle. Jesli tak - to prosilbym o
sprostowanie), ze
Lisp wydaje mi sie dojrzalym, powaznym jezykiem wykorzystywanym miedzy
innymi
w A.I, sieciach neuronowych itp, natomiast Scheme jakos duzo "mniej
powaznie sie
prezentuje". Oczywiscie w LISPie spora wada, szczegolnie dla
poczatkujacego jest
brak konstrukcji imperatywnych.
Czy jest jakas implementacja Scheme z porzadna iloscia sensownych
bibliotek (parsery,
sockety, WWW), mozliwosca latwego budowania GUI (cos jjak defaultowo
dzialajacy
Tkinter w Pythonie chociazby) itp? MrED z PLT wydaje sie raczej tylko
zestawem kilku
prostych widgetow dla celow edukacyjno-demonstracyjnych, a chodziloby
o cos,
w czym mozna robic rowniez wieksze i powazniejsze aplikacja z GUI

> Napisz=EA wieczorem jak znajd=EA chwilk=EA.

No wlasnie.. bo ciekaw jestem Waszej opinii na temat Dylana.
Skladnie ma na prawde klarowna i raczej pozbawiona udziwnien.





From: Marcin 'Qrczak' Kowalczyk <qrczak knm.org.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Dnia 17-05-2007, czw o godzinie 23:19 +0200, Micha=C5=82 Przyby=C5=82ek
napisa=C5=82(a):

> > To zmniejsza czytelno=C5=9B=C4=87, a nie zwi=C4=99ksza. Je=C5=9Bli wszy=
stkie konstrukcje
> > wygl=C4=85daj=C4=85 podobnie, to trudniej je rozr=C3=B3=C5=BCni=C4=87 n=
a pierwszy rzut oka
> > i trzeba bardziej wczytywa=C4=87 si=C4=99 w s=C5=82owa.
>=20
> Nie. W Lispie wszystkie konstrukcje wygl=C4=85daj=C4=85 podobnie, bo s=C4=
=85 podobne -=20
> a nawet identyczne.

Nie s=C4=85 identyczne. Definicja lokalnej zmiennej jest czym innym ni=C5=
=BC
arytmetyka na liczbach, arytmetyka na liczbach jest czym innym ni=C5=BC
indeksowanie macierzy, indeksowanie macierzy jest czym innym ni=C5=BC
przypisanie zmiennej, przypisanie zmiennej jest czym innym ni=C5=BC
stworzenie lokalnej funkcji. Te konstrukcje maj=C4=85 cechy wsp=C3=B3lne,
ale zdecydowanie s=C4=85 r=C3=B3=C5=BCne.

Analogia: znaki drogowe maj=C4=85 r=C3=B3=C5=BCne kszta=C5=82ty, =C5=BCeby =
mo=C5=BCna by=C5=82o je =C5=82atwiej
rozr=C3=B3=C5=BCni=C4=87 na pierwszy rzut oka. A przecie=C5=BC teoretycznie=
wszystkie
mog=C5=82yby by=C4=87 prostok=C4=85tne.

Analogia: niekt=C3=B3re ma=C5=82e litery alfabetu =C5=82aci=C5=84skiego ods=
taj=C4=85 w g=C3=B3r=C4=99 albo
w d=C3=B3=C5=82 od g=C5=82=C3=B3wnego ci=C4=85gu. C=C3=B3=C5=BC za niekonse=
kwencja!

Analogia: dobrze zaprojektowane ikony na paskach narz=C4=99dziowych maj=C4=
=85
r=C3=B3=C5=BCnorodne kszta=C5=82ty.

Przy tworzeniu dzie=C5=82a, kt=C3=B3re cz=C5=82owiek b=C4=99dzie czyta=C5=
=82, nale=C5=BCy
wykorzystywa=C4=87 dost=C4=99pn=C4=85 r=C3=B3=C5=BCnorodno=C5=9B=C4=87 form=
.. Oczywi=C5=9Bcie bez przesady.

Nawet Lisp stosuje kilka skr=C3=B3t=C3=B3w: ' ` , ,
bez kt=C3=B3rych notacja by=C5=82aby bardziej sp=C3=B3jna, ale mniej wygodn=
a.

> Nie trzeba ich rozr=C3=B3=C5=BCnia=C4=87.

Ale warto.

> Zawsze (w uproszczeniu nieistotnym dla tej dyskusji) jest to aplikacja
> operatora do argument=C3=B3w.

No to co?

W dodatku Common Lisp rozr=C3=B3=C5=BCnia wyra=C5=BCenia, kt=C3=B3re s=C4=
=85 do siebie bardziej
podobne ni=C5=BC np. wzi=C4=99cie wielko=C5=9Bci tablicy jest podobne do de=
finicji
lokalnej zmiennej - a mianowicie aplikacj=C4=99 globalnej funkcji i aplikac=
j=C4=99
funkcji przekazanej jako parametr:
(f x)
(funcall f x)

> BTW, zapomnia=C5=82e=C5=9B odnie=C5=9B=C4=87 si=C4=99 do linka, kt=C3=B3r=
ego poda=C5=82em.

Tam nie by=C5=82o =C5=BCadnych argument=C3=B3w.

> ps. I o ile pami=C4=99tam, to mieli=C5=9Bmy umow=C4=99, =C5=BCe nie b=C4=
=99dziesz publicznie=20
> krytykowa=C5=82 Lispu :-)

Nie przypominam sobie.

--=20
__("< Marcin Kowalczyk
\__/ qrczak knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/


From: =?ISO-8859-2?Q?Micha=B3_Przyby=B3ek?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
pawellt gazeta.pl napisał(a):

> Oczywiscie w LISPie spora wada, szczegolnie dla
> poczatkujacego jest

S± konstrukcje imperatywne.

W Scheme nie s± jako¶ szczególnie wspierane (trzeba doładować
odpowiednie biblioteki), ale w CL'u np. sam mechanizm pętli jest bez
porównania wygodniejszy i potężniejszy od tego co masz w klasycznych
językach programowania (poszukaj semantykę rozszerzonego loop'a).

> Czy jest jakas implementacja Scheme z porzadna iloscia
> sensownych bibliotek (parsery, sockety, WWW), mozliwosca
> latwego budowania GUI (cos jjak defaultowo dzialajacy
> Tkinter w Pythonie chociazby) itp?

Wszystko to jest przy PLT. Nie wiem na ile wygodne.

>> Napiszę wieczorem jak znajdę chwilkę.
>
> No wlasnie.. bo ciekaw jestem Waszej opinii na temat Dylana.
> Skladnie ma na prawde klarowna i raczej pozbawiona udziwnien.

Nie mogę znaleĽć pewnego artykułu. Jeden z współtwórców Dylanu
wypowiadał się wła¶nie o tym jak w Dylanie zwalili składnię i system
makr. Jak znajdę to pode¶lę.

BTW, w¶ród Lispowców kr±ży takie przekonanie, że "Dylan to byłby nawet
niezłym językiem, gdyby miał normaln± składnię (tj. Lispow±)" :-)


mp


From: =?UTF-8?B?TWljaGHFgiBQcnp5YnnFgmVr?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
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


From: =?UTF-8?B?TWljaGHFgiBQcnp5YnnFgmVr?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Marcin 'Qrczak' Kowalczyk napisał(a):

> Analogia: znaki drogowe mają różne kształty, żeby można było je łatwiej
> rozróżnić na pierwszy rzut oka. A przecież teoretycznie wszystkie
> mogłyby być prostokątne.
>
> Analogia: niektóre małe litery alfabetu łacińskiego odstają w górę albo
> w dół od głównego ciągu. Cóż za niekonsekwencja!
>
> Analogia: dobrze zaprojektowane ikony na paskach narzędziowych mają
> różnorodne kształty.

Fruwasz w powietrzu zamiast stąpać po ziemi. Analogie są wtedy
użyteczne, kiedy nie mamy dostępu do wejściowego zagadnienia.

Skoro kształty znaków drogowych są dobrą analogią składni Lispu, to
dlaczego musiałeś się uciekać do pokazania przykładu przechodząc przez
analogię, zamiast bezpośrednio pokazać taki przykład w Lispie - tj.
dlaczego przepuściłeś przez analogię tylko konkluzję, a nie cały problem ?


W ten sposób można łatwo manipulować i fałszować, nie dociekać prawdę.


m


Sprzedaż kosmetyków


From: =?UTF-8?B?TWljaGHFgiBQcnp5YnnFgmVr?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Marcin 'Qrczak' Kowalczyk napisał(a):

>> ps. I o ile pamiętam, to mieliśmy umowę, że nie będziesz publicznie
>> krytykował Lispu :-)
>
> Nie przypominam sobie.

Ale ja pamiętam.

Była rzecz przy onejś okazji, kiedy to zgodziłeś się słusznie, że
krytyka Lispu w pewnych środowiskach przynosi działanie praktycznie
wyłącznie destrukcyjne na delikatne umysły z cielsk zamieszkujących owe
środowisko. Bardzo prosta podniesiona wtedy przyczyna takiego stanu
rzeczy została - nie ma drugiego takiego języka programowania na tej
obserwowalnej części świata, który uczyłby tak wiele dobrych nawyków
programistycznych, nie ucząc przy tym jakichkolwiek złych.


mp


From: =?ISO-8859-2?Q?Micha=B3_Przyby=B3ek?= <pummelo hamete.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
pawellt gazeta.pl napisał(a):

> Inna sprawa (byc moze sie myle. Jesli tak - to prosilbym o
> sprostowanie), ze
> Lisp wydaje mi sie dojrzalym, powaznym jezykiem wykorzystywanym miedzy
> innymi
> w A.I, sieciach neuronowych itp, natomiast Scheme jakos duzo "mniej
> powaznie sie
> prezentuje".

Prawda jest taka, że główna siła ludzi zajmuj±cych się rozwojem Lispów
skupiona jest teraz wokół Scheme. Standard Common Lispu ma już 10 lat z
hakiem i praktycznie zerowe szanse na ponowne otwarcie (z wielu względów
- także takiego, że proces standaryzacyjny tego języka jest wyj±tkowo
trudny).

Mówię to z pewn± doz± smutku - dla mnie Common Lisp jest językiem
nieporównywalnie lepiej zaprojektowanym i przemy¶lanym niż Scheme.

> Oczywiscie w LISPie spora wada, szczegolnie dla
> poczatkujacego jest brak konstrukcji imperatywnych.

Tutaj masz kilka prostych przykładów konstrukcji wykorzystuj±cej pętle w
Common Lispie:

(defun fact (n)
(loop with acc = 1
for i from 1 to n
do (setq acc (* acc i))
finally (return acc) ) )


(defun zip-2 (list-1 list-2)
(loop for e1 in list-1
for e2 in list-2
collect (cons e1 e2) ) )


(defun inject-position (list)
(loop for e in list
for n from 0
collect (cons e n) ) )


Pokaż mi jak to zapiszesz w C++/Javie, to zobaczymy, czy jest zwięĽlej
lub wygodniej :-P


mp


From: Marcin 'Qrczak' Kowalczyk <qrczak knm.org.pl>
Subject: Re: Przyjemny, elegancki, prosty jezyk funkcyjny
Dnia 18-05-2007, pi=C4=85 o godzinie 00:59 +0200, Micha=C5=82 Przyby=C5=82e=
k
napisa=C5=82(a):

> > W dodatku Common Lisp rozr=C3=B3=C5=BCnia wyra=C5=BCenia, kt=C3=B3re s=
=C4=85 do siebie bardziej
> > podobne ni=C5=BC np. wzi=C4=99cie wielko=C5=9Bci tablicy jest podobne d=
o definicji
> > lokalnej zmiennej - a mianowicie aplikacj=C4=99 globalnej funkcji i apl=
ikacj=C4=99
> > funkcji przekazanej jako parametr:
> > (f x)
> > (funcall f x)
>=20
> To jest nieprawda. Rozr=C3=B3=C5=BCnienie dotyczy tego, w kt=C3=B3rej prz=
estrzeni nazw=20
> siedzi dany symbol, a nie czy funkcja jest globalna, czy nie.

To nie przeczy temu, co napisa=C5=82em. Globalna funkcja siedzi w przestrze=
ni
nazw funkcji. Parametr funkcji siedzi w przestrzeni nazw zmiennych.
Opisa=C5=82em praktyczny skutek, a nie mechanizm.

> Nie rozumiem w og=C3=B3le dlaczego mia=C5=82yby by=C4=87 brane z tej same=
j przestrzeni,

Bo funkcja jest szczeg=C3=B3lnym przypadkiem warto=C5=9Bci. Nie jest odr=C4=
=99bnym
bytem, kt=C3=B3ry warto=C5=9Bci=C4=85 nie jest. Nazwana funkcja bywa przeka=
zywana jak
inne warto=C5=9Bci, a warto=C5=9Bci bywaj=C4=85 aplikowane jako funkcje (be=
z statycznej
wiedzy o tym, czy s=C4=85 funkcjami).

> ani dlaczego to mia=C5=82oby by=C4=87 to "bardziej sp=C3=B3jne".

U=C5=BCy=C5=82em argumentu sp=C3=B3jno=C5=9Bci dlatego, =C5=BCe Ty go wcze=
=C5=9Bniej u=C5=BCy=C5=82e=C5=9B odno=C5=9Bnie
sk=C5=82adni, a wi=C4=99c powiniene=C5=9B uwa=C5=BCa=C4=87 sp=C3=B3jno=C5=
=9B=C4=87 za wa=C5=BCn=C4=85.

> I, zreszt=C4=85, u=C5=82atwia to pisanie kodu utrudniaj=C4=85c przypadkow=
y clash=20
> r=C3=B3=C5=BCnych koncept=C3=B3w. Gdyby wszystko siedzia=C5=82o w jednej =
przestrzeni nie=20
> m=C3=B3g=C5=82by=C5=9B mie=C4=87 =C5=BCadnych dw=C3=B3ch z nast=C4=99puj=
=C4=85cych rzeczy:
>=20
> - typu "list",
> - konstruktora listy "list"
> - zmiennej lokalnej przekazanej jako "list" (dok=C5=82adniej, nei by=C5=
=82o by to=20
> dobrym pomys=C5=82em i tak jak w innych j=C4=99zykach u=C5=BCywa=C5=82by=
=C5=9B nazw typu "ls",=20
> zamiast "list", "len" zamiast "length" itp.).

Jak wiesz, do rozwi=C4=85zywania tego problemu stosuj=C4=99 konwencj=C4=99 =
wielko=C5=9Bci
liter: LIST, List, list. Nie potrzeba wi=C4=99c osobnych przestrzeni nazw.

> Zauwa=C5=BC te=C5=BC, =C5=BCe rozgraniczenie przestrzeni nazw jest spotyk=
ane w wielu
> (w wi=C4=99kszo=C5=9Bci) j=C4=99zykach programowania.

Moim zdaniem oba rozwi=C4=85zania maj=C4=85 podobn=C4=85 popularno=C5=9B=C4=
=87. Wsp=C3=B3lna
przestrze=C5=84 nazw dla zmiennych i funkcji jest szczeg=C3=B3lnie sensowna
w j=C4=99zyku, kt=C3=B3ry u=C5=82atwia przekazywanie funkcji i aplikacj=C4=
=99 ich po=C5=9Brednio,
a wi=C4=99c tam, gdzie to ma sens semantycznie.

Funkcje i zmienne w tej samej przestrzeni nazw:
- C, C++, Haskell, JavaScript, Python, OCaml, Scheme, SML

Funkcje i zmienne w r=C3=B3=C5=BCnych przestrzeniach nazw:
- C#, Common Lisp, Java, Perl, Prolog, Ruby, Smalltalk

--=20
__("< Marcin Kowalczyk
\__/ qrczak knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/


następna strona