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/
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!
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
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