Kosmetyki naturalne


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æ".


From: Wojciech =?iso-8859-2?Q?Mu=B3a?=
Subject: Re: Ach ta Polska.
Rudy wrote:
> z tego co widaæ, w Polsce jako¶ nie ma zbyt wielkiego zainteresowania
> programowaniem funkcyjnym.

Jak i na ca³ym ¶wiecie. W przemy¶le nie u¿ywa siê j. funkcyjnych.

w.


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' 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: 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/


Sprzeda¿ kosmetyków


From: Tomasz bla Fortuna <bla thera.be>
Subject: Re: IDE dla ocamla
--Sig_/DDVarubh7TWtNZwJc0JCuWC
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

Dnia Fri, 02 Nov 2007 13:35:01 +0100
Segmentation Fault <coredumpWYKASUJ onet.eu> napisa=B3(a):

> Jaki=B6 czas temu ;) rozmawiali=B6my o IDE dla Ocamla. Kto=B6 wspomnia=B3=
o=20
> pluginie do eclipse, ale nie poda=B3 linka. W=B3a=B6nie trafi=B3em na
> eclipsoego plugina:
>=20
> http://ocaml.eclipse.ortsa.com:8480/ocaide/
Wygl=B1da ciekawie. ;) Na pewno spr=F3buj=EA cho=E6 VIMa kocham (platoniczn=
ie).

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

--Sig_/DDVarubh7TWtNZwJc0JCuWC
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

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

iD8DBQFHKzp3T6wvGJB0bnkRAsu4AJ9bcaQ33PuxUrfs4UPpgGbAnwJXXQCfcXxq
k03PIPvJQX/UQmIZMqKAj1M=
=mFn9
-----END PGP SIGNATURE-----

--Sig_/DDVarubh7TWtNZwJc0JCuWC--


From: =?iso-8859-2?q?Rafa=B3_Rawicki?= <rawicki gmail.com>
Subject: Re: Ach ta Polska.
On 3 Wrz, 14:59, "Rudy" <a.r.dabrowskiSCAREC... gmail.com> wrote:
> z tego co wida=E6, w Polsce jako=B6 nie ma zbyt wielkiego zainteresowania
> programowaniem funkcyjnym. A =BFeby tak cho=E6 troszk=EA to rozrusza=E6? =
My=B6la=B3em,
> =BFe mo=BFe bym tak przet=B3umaczy=B3 par=EA "przyn=EAt" na programowanie=
funkcyjne,
> przyk=B3adowo "Why functional programming matters". Co s=B1dzicie o tym p=
omy=B6le?
>
> PS to od razu podsu=F1cie dobry pomys=B3 na przet=B3umaczenie referntial
> transparency ;-)

Pomys=B3 =B6wietny, bo rzeczywi=B6cie zainteresowanie ma=B3e.

Co do referential transparency Google znalaz=B3o jedynie wzmiank=EA w
Wikibooks [1] i tam to jest przet=B3umaczone jako "referencyjna
prze=BCroczysto=B6=E6". My=B6l=EA =BFe jak by tego nie t=B3umaczy=E6 i tak =
wypada=B3oby
w nawiasie zostawi=E6 wersj=EA angielsk=B1.

[1] http://pl.wikibooks.org/wiki/Programowanie_funkcyjne


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

> To jest poboczny temat. Zaczęło się od mnogości nawiasów, która irytuje
> mnie bardziej niż #' i funcall/apply.

Pierwszy raz o czymś takim piszesz, choć przeczuwałem ten stan rzeczy od
dłuższego czasu. Opowiedz mi o tym.

> 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ł?

Nie będę bronił czegokolwiek związanego z Perlem. Zauważ, że ja nie
wyciągnąłem Perla kiedy mówiliśmy o operatorach, uważając, że byłoby to
nie fair. Ale skoro Ty już go wyciągnąłeś, to może wyjaśnisz jednak jak
składnia Perlu wpasowuje się w Twoją filozofię, hm... ?

> 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.

Jeszcze raz Ci powtarzam, że funkcje są tak czy inaczej już wyróżnione
_syntaktycznie_. Tablice nie.

Ale może skupmy się na jednym aspekcie - rysuj za każdym razem co
dokładnie zarzucasz temu podejściu - niespójność/nielogiczność, czy to,
że jest niewygodne.

Z pierwszym nie wygrasz, a drugie, w dużej mierze, jest kwestią gustu.
Ja wolę w Lispie rozdzielenie przestrzeni nazw (pomijając zupełnie
kwestię kulawego systemu makr, który w jakimś stopniu wymusza takie
podejście ; przy czym też wolę makra z Common Lispu niż ze Scheme).

> 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ę.

Przekazywanie "return-from" ? Całkiem częste. Praktycznie nie ma innej
możliwości złapania za kontynuację w CL'u.


mp


From: ppp <jimmie0 wp.pl>
Subject: Dlaczego to nie dziala?
program ma zlicza=E6 ile razy w zadanym pliku wyst=B1pi=B3 dany wyraz.
problem w tym, =BFe za bardzo nie chce dzia=B3a=E6...

let isspace ch =3D (ch =3D' ') || (ch =3D'\t') || (ch =3D'\n') || (ch
=3D'\r') ;;


let input_string channel =3D
let s =3D ref "" and ch =3D ref (input_char channel) in
begin
while isspace (!ch) do ch :=3D input_char channel done;
while not (isspace (!ch)) do
s :=3D !s^(String.make 1 !ch);
ch :=3D input_char channel
done;
!s
end
;;


let zlicz (nazwa,wyraz) =3D
let plik =3D open_in nazwa
in
begin
let i =3D ref (1) in
while true do
let odczyt =3D input_string plik in
i=3Di+1;
done;
end
;;


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!


Sklep z kosmetykami


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: ppp <jimmie0 wp.pl>
Subject: Re: Dlaczego to nie dziala?
Powiedzmy =BFe to zadanie domowe:) dzi=EAki wielkie.


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

> Jakiej sp=C3=B3jno=C5=9Bci ? Przecie=C5=BC jest sp=C3=B3jnie - zawsze mas=
z ewaluacj=C4=99=20
> pierwszego argumentu w =C5=9Brodowisku funkcyjnym, pozosta=C5=82ych w =C5=
=9Brodowisku=20
> zwyk=C5=82ych warto=C5=9Bci i aplikacj=C4=99 pierwszego argumentu, kt=C3=
=B3ry musi by=C4=87=20
> funkcj=C4=85 (operatorem) do pozosta=C5=82ych, kt=C3=B3re musz=C4=85 by=
=C4=87 zwyk=C5=82ymi warto=C5=9Bciami.

Niesp=C3=B3jno=C5=9B=C4=87 polega na tym, =C5=BCe jedne funkcje s=C4=85 dos=
t=C4=99pne w =C5=9Brodowisku
funkcyjnym, a inne - w =C5=9Brodowisku zwyk=C5=82ych warto=C5=9Bci.

To jest poboczny temat. Zacz=C4=99=C5=82o si=C4=99 od mnogo=C5=9Bci nawias=
=C3=B3w, kt=C3=B3ra irytuje
mnie bardziej ni=C5=BC #' i funcall/apply.

> > Nieprawda. Funkcj=C4=99 mog=C4=99 przekaza=C4=87 jako argument innej op=
eracji albo
> > zaaplikowa=C4=87 do argument=C3=B3w. Parametr funkcji mog=C4=99 przekaz=
a=C4=87 dalej jako
> > argument innej operacji albo zaaplikowa=C4=87 do argument=C3=B3w.
>=20
> Prawda. Funkcji u=C5=BCywa si=C4=99 inaczej ni=C5=BC pozosta=C5=82ych obi=
ekt=C3=B3w - tylko=20
> funkcje s=C4=85 aplikowane. Oczywi=C5=9Bcie _istniej=C4=85_ te=C5=BC kont=
eksty, w kt=C3=B3rych=20
> u=C5=BCywa si=C4=99 funkcji tak jak zwyk=C5=82ych warto=C5=9Bci.

Wystarczy, =C5=BCe istniej=C4=85 takie konteksty, =C5=BCeby by=C5=82a konie=
czno=C5=9B=C4=87 jawnego
importowania z jednej przestrzeni nazw do innej. Jawne importowanie jest
dla mnie wad=C4=85, bo ka=C5=BCe programi=C5=9Bcie rozr=C3=B3=C5=BCnia=C4=
=87 sytuacje, kt=C3=B3re mog=C4=85 by=C4=87
z powodzeniem traktowane jako to samo.

> Nie traktuj dodatkowej ilo=C5=9Bci kodu jako z=C5=82o, z kt=C3=B3rym trze=
ba walczy=C4=87,
> a jako przydatne komentarze.

Dla mnie nieprzydatne. To, =C5=BCe dane s=C5=82owo oznacza funkcj=C4=99, ni=
e jest tak
wa=C5=BCn=C4=85 informacj=C4=85, =C5=BCeby zmusza=C4=87 programist=C4=99 do=
jawnego zaznaczania tego
w ka=C5=BCdym miejscu, w kt=C3=B3rym jest u=C5=BCyte.

W Perlu jest osobna przestrze=C5=84 nazw dla skalar=C3=B3w, osobna dla tabl=
ic,
osobna dla s=C5=82ownik=C3=B3w, osobna dla funkcji i osobna dla uchwyt=C3=
=B3w
wej=C5=9Bcia-wyj=C5=9Bcia. Te=C5=BC trzeba owin=C4=85=C4=87 wszystko w skal=
ar za pomoc=C4=85 jawnej
operacji, =C5=BCeby przekaza=C4=87 obiekt po=C5=9Brednio, a potem odwin=C4=
=85=C4=87 w miejscu
u=C5=BCycia. To mi si=C4=99 nie podoba tak samo jak w Lispie. Tego te=C5=BC=
b=C4=99dziesz
broni=C5=82? Je=C5=9Bli nie, to dlaczego chcesz wyr=C3=B3=C5=BCnia=C4=87 fu=
nkcje, a nie chcesz
wyr=C3=B3=C5=BCnia=C4=87 tablic? Przecie=C5=BC tablice te=C5=BC s=C4=85 szc=
zeg=C3=B3lnymi warto=C5=9Bciami:
tylko tablice s=C4=85 indeksowane.

> >> BTW, czy np. etykiety dla "goto", te=C5=BC powinny siedzie=C4=87 w tej=
samej=20
> >> przestrzeni co pozosta=C5=82e rzeczy ?
> >=20
> > Je=C5=9Bli nie s=C4=85 first class values, to s=C4=85 u=C5=BCywane w r=
=C3=B3=C5=BCnych kontekstach,
> > wi=C4=99c mog=C4=85 by=C4=87 w r=C3=B3=C5=BCnych przestrzeniach nazw.
>=20
> Co rozumiesz przez bycie "first-class" ? Czy kontynuacja =C5=82apana prze=
z=20
> "return" nie jest first-class, cho=C4=87 mog=C4=99 owin=C4=85=C4=87 j=C4=
=85 w lambd=C4=99 i przekaza=C4=87=20
> dalej ?

Mog=C4=99 si=C4=99 zgodzi=C4=87, =C5=BCe jest first class, wi=C4=99c mog=C5=
=82yby te=C5=BC by=C4=87 w tej samej
przestrzeni nazw. Przekazywanie etykiet po=C5=9Brednio jest zapewne tak
rzadkie, =C5=BCe to, czy s=C4=85 w tej samej przestrzeni nazw, nie ma du=C5=
=BCego
znaczenia praktycznego i nie b=C4=99d=C4=99 tutaj naciska=C5=82 w =C5=BCadn=
=C4=85 stron=C4=99.

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


From: "Krzysztof Bia³och" <krzysiek_bialoch wp.pl>
Subject: Szko³a
Dzisiejsza szko³a to mi.tylko nauka.



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

>> Jeszcze raz Ci powtarzam, że funkcje są tak czy inaczej już wyróżnione
>> _syntaktycznie_. Tablice nie.
>
> W Perlu tablice też są wyróżnione składniowo.

W Lispie nie są. Obawiam się, że naprawdę ciężko Ci będzie zarzucić
niespójność Lispu opierając się ledwie o niespójność Perla (już prędzej
udało by Ci się w ten sposób udowodnić niespójność Koguta, jako, że on
ma więcej wspólnego z Perlem niż Lisp ; szczególnie jeżeli chodzi o
filozofię języka, to Lisp i Perl stoją na dwóch przeciwległych biegunach
- reszta języków jest gdzieś pomiędzy).

> Zresztą to, że w jakiejś składni funkcja jest pod pewnym względem
> wyróżniona składniowo, nie jest argumentem za tym, żeby wyróżniać ją
> dodatkowo osobnÄ… przestrzeniÄ… nazw.

Nie jest argumentem.

Nie jest dodatkowym wyróżnieniem. Przestrzeń liniowo-topologiczna i
przestrzeń topologiczna, to dwie różne rzeczy. Ciężko Ci będzie
przepchnąć argument, że niekonsekwencją w matematyce jest to, że
przekształcenia przestrzeni liniowo-topologicznych definiuje się inaczej
niż przekształcenia przestrzeni topologicznych i inaczej niż zwykłe
funkcje na zbiorach. Albo, że to "dodatkowo wyróżnia" przestrzeń
topologiczną. Taka a nie inna definicja jest właśnie _konsekwencją_
różności, a nie dodatkową rzeczą pogłębiającą różność.

Raczej gdyby definicje przekształceń były takie same, to powinniśmy się
pytać "dlaczego są takie same, skoro to różne rzeczy ? - ooo... jakie to
dziwne".

No więc - dlaczego w Kogucie funkcje i zwykłe wartości siedzą w tym
samym worku, skoro są czymś innym - mają inne własności i inaczej się
ich używa ? Nie uważasz, że to trochę nielogiczne... ?

>> Ale może skupmy się na jednym aspekcie - rysuj za każdym razem co
>> dokładnie zarzucasz temu podejściu - niespójność/nielogiczność, czy to,
>> że jest niewygodne.
>
> Z reguły zarzucam, że jest niewygodne. Niespójność i nielogiczność
> podnoszę kiedy kontruję argument, że inne rozwiązanie w przeciwieństwie
> do mojego jest wyjątkowo spójne i logiczne.

Dlaczego kontrujesz rzeczywistość ? Czy ona Ci coś złego wyrządziła ?
Bądź miły dla rzeczywistości, to rzeczywistość będzie miła dla Ciebie :-)


mp


Akcesoria kosmetyczne i kosmetyki w sklepie internetowym pachnidelko.pl


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


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: ppp <jimmie0 wp.pl>
Subject: Re: Dlaczego to nie dziala?
On 22 Maj, 01:27, Tomasz bla Fortuna <b... thera.be> wrote:
> Dnia 21 May 2007 15:06:56 -0700
> ppp <jimm... wp.pl> napisa=B3(a):
>
>
>
> > program ma zlicza=E6 ile razy w zadanym pliku wyst=B1pi=B3 dany wyraz.
> > problem w tym, =BFe za bardzo nie chce dzia=B3a=E6...
>
> > let isspace ch =3D (ch =3D' ') || (ch =3D'\t') || (ch =3D'\n') || (ch
> > =3D'\r') ;;
> > (ciach)
> > let zlicz (nazwa,wyraz) =3D
> > let plik =3D open_in nazwa
> > in
> > begin
> > let i =3D ref (1) in
> > while true do
> > let odczyt =3D input_string plik in
> > i=3Di+1;
> > done;
> > end
> >;;
>
> Funkcja "zlicz" pobiera nazw=EA wyrazu - ale nic z nim nie robi.
> Do tego "i=3Di+1" nie jest specjalnie legalnym wyra=BFeniem, imho powinno
> by=E6 i:=3D!i + 1. Te=BF zamiast dziwnego "let zlicz (nazwa,wyraz)" da=B3=
bym
> raczej: let zlicz nazwa wyraz, po co tu krotka? Tak troch=EA imperatywnie
> pachnie. ;d
>
> A odpowiadaj=B1c na pytanie - program nie jest sko=F1czony, abstrahuj=B1c=
od
> tego co w/w kod mia=B3by robi=E6 lub robi.
>
> --
> Tomasz bla Fortuna
> jid: bla(at)af.gliwice.pl
> pgp: 0x90746E79 pgp.mit.edu
>
> signature.asc
> 1KPobierz

npisa=B3em wcze=B6niej, =BFe ma zlicza=E6 wyst=B1pienia zadanego wyrazu w
podanym pliku. no wiem =BFe troch=EA brakuje, ale nie mam pomys=B3u na to
jako=B6. czekam na ol=B6nienie;)


From: "Krzysztof Bia³och" <krzysiek_bialoch wp.pl>
Subject: Re: Szko³a

U¿ytkownik "Krzysztof Bia³och" <krzysiek_bialoch wp.pl> napisa³ w wiadomo¶ci
news:fdd9je$p3p$1 atlantis.news.tpi.pl...
> Dzisiejsza szko³a to mi.tylko nauka. szko³a jestna czasie
>



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

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

Wyjaśnienie dla innych śledzących wątek:

(defun foo ()
(flet ((escape ()
(return-from foo 'a) ))
(bar #'escape)
'b ) )

(defun bar (fun)
(funcall fun)
'c )


Punkt wyskoku z funkcji "foo" (tj. kontynuacja) jest owijany w lokalne
domknięcie "escape" i przekazywany do "bar". Kiedy "bar" odpali takie
domknięcie, bieżący przepływ wykonywania programu zostaje przerwany i
zastÄ…piony miejscem powrotu z "foo".


mp


WIFI - Warszawa, Ursynów


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

>>> To jest poboczny temat. Zaczęło się od mnogości nawiasów, która irytuje
>>> mnie bardziej niż #' i funcall/apply.
>> Pierwszy raz o czymś takim piszesz, choć przeczuwałem ten stan rzeczy od
>> dłuższego czasu. Opowiedz mi o tym.
>
> Nie jestem przekonany, czy tego chcesz. Taki flejm z reguły kończy się
> stwierdzeniem, że różne są gusta.

Nie, nie chcÄ™ jakiegokolwiek flejma.

Mnie zagadnienie ciekawi z punktu widzenia psychologicznego. Powiadasz,
że Cię "irytuje mnogość nawiasów" w Lispie. Ale, prawda, nie piszesz w
Lispie w ogóle. Zastanawia mnie jak często nachodzi Cię ta irytacja i
rozdrażnienie (co później dodajesz) ? Od jak dawna ?

Pytam zupełnie serio. Mój jeden znajomy właśnie szuka tematu pracy
doktorskiej z psychologii. Myślę, że dokładne opisanie tak ostrego
przypadku parenthophobi, mogłoby być świetnym tematem. Na pewno
pozwoliłoby to nam lepiej zrozumieć tę chorobę. Może nawet znaczący
przełom nastąpiłby w diagnozowaniu i leczeniu. Zgodziłbyś się na
współpracę ? Pomyśl jaka sława czeka. I ilu ludzi mogłoby przestać
dzięki temu cierpieć !


mp


nastêpna strona