-
1. Data: 2012-05-15 19:10:51
Temat: jezyki z definiowaniem operatorow
Od: "fir " <f...@g...pl>
czy wystepuja jezyki z definiowaniem
operatorow (inne niz c++, gdzie zresztą
to definiowanie jest bardzo ograniczone -
mozna sobie wyobrazic jezyk ze tak swobodnym
definiowaniem operatorow jak funkcji, moze
to skrociloby listingi choc trudno powiedziec)
czy sa takie jezyki i jak to wyglada?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
2. Data: 2012-05-15 20:20:08
Temat: Re: jezyki z definiowaniem operatorow
Od: Edek Pienkowski <e...@g...com>
Dnia Tue, 15 May 2012 17:10:51 +0000, fir napisal:
> czy wystepuja jezyki z definiowaniem
> operatorow (inne niz c++, gdzie zresztą
> to definiowanie jest bardzo ograniczone -
> mozna sobie wyobrazic jezyk ze tak swobodnym
> definiowaniem operatorow jak funkcji, moze
> to skrociloby listingi choc trudno powiedziec)
>
> czy sa takie jezyki i jak to wyglada?
Wygląda to jak każdy infix:
bleh whatever wlah
oznacza bleh.whatever(blah) lub po dodaniu odrobiny syntax sugaru
whatever(bleh, blah)
Edek
-
3. Data: 2012-05-15 20:33:31
Temat: Re: jezyki z definiowaniem operatorow
Od: " " <f...@g...pl>
Edek Pienkowski <e...@g...com> napisał(a):
> Dnia Tue, 15 May 2012 17:10:51 +0000, fir napisal:
>
> > czy wystepuja jezyki z definiowaniem
> > operatorow (inne niz c++, gdzie zresztÄ
> > to definiowanie jest bardzo ograniczone -
> > mozna sobie wyobrazic jezyk ze tak swobodnym
> > definiowaniem operatorow jak funkcji, moze
> > to skrociloby listingi choc trudno powiedziec)
> >
> > czy sa takie jezyki i jak to wyglada?
>
> WyglÄ da to jak kaĹźdy infix:
>
> bleh whatever wlah
>
> oznacza bleh.whatever(blah) lub po dodaniu odrobiny syntax sugaru
> whatever(bleh, blah)
>
pytam jak to wyglada w danym jezyku bo ze a op b <=> op(a,b)
to akurat raczej wiadomo
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
4. Data: 2012-05-15 21:04:10
Temat: Re: jezyki z definiowaniem operatorow
Od: " " <f...@g...pl>
<f...@g...pl> napisał(a):
> Edek Pienkowski <e...@g...com> napisał(a):
>
> > Dnia Tue, 15 May 2012 17:10:51 +0000, fir napisal:
> >
> > > czy wystepuja jezyki z definiowaniem
> > > operatorow (inne niz c++, gdzie zresztÄ
> > > to definiowanie jest bardzo ograniczone -
> > > mozna sobie wyobrazic jezyk ze tak swobodnym
> > > definiowaniem operatorow jak funkcji, moze
> > > to skrociloby listingi choc trudno powiedziec)
> > >
> > > czy sa takie jezyki i jak to wyglada?
> >
> > WyglÄ da to jak kaĹźdy infix:
> >
> > bleh whatever wlah
> >
> > oznacza bleh.whatever(blah) lub po dodaniu odrobiny syntax sugaru
> > whatever(bleh, blah)
> >
>
> pytam jak to wyglada w danym jezyku bo ze a op b <=> op(a,b)
> to akurat raczej wiadomo
>
mozna by pisac niby stylem ksiazkowym, z tym ze wyglada ze
i tak sporo nawiasow moze musialoby byc w uzyciu
define procedure main as (alokuj int i to 0, repeat (pisz i)
until i equals 100 )
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
5. Data: 2012-05-15 22:39:36
Temat: Re: jezyki z definiowaniem operatorow
Od: Andrzej Jarzabek <a...@g...com>
On 15/05/2012 18:10, fir wrote:
> czy wystepuja jezyki z definiowaniem
> operatorow (inne niz c++, gdzie zresztą
> to definiowanie jest bardzo ograniczone -
> mozna sobie wyobrazic jezyk ze tak swobodnym
> definiowaniem operatorow jak funkcji, moze
> to skrociloby listingi choc trudno powiedziec)
>
> czy sa takie jezyki i jak to wyglada?
W Groovy można definiować operatory na podobnej zasadzie jak w C++.
Ze swobodnym definiowaniem operatorów problem jest taki, że ich
pierwszeństwo i stronność są określone gramatyką języka. Zmienianie tego
na bieżąco przy pomocy samego programu w tym języku wydaje się
problematyczne - być może, że wręcz prowadzi do nierozwiązywalnych
problemów, a na pewno standardowy model skaner-parser-translacja
trafiłby szlag.
W wielu językach funkcyjnych natomiast (np. w różnych dialektach Lispa)
w ogóle nie ma infiksowych operatorów, natomiast w porównaniu do
typowych języków można stosować dość szeroki zestaw znaków w
identyfikatorach. I tak pisze się (* (+ 2 2) (+3 4)), gdzie '+' i '*' są
nazwami funkcji.
-
6. Data: 2012-05-15 22:42:11
Temat: Re: jezyki z definiowaniem operatorow
Od: Roman W <b...@g...pl>
On Tuesday, May 15, 2012 6:10:51 PM UTC+1, fir wrote:
> czy wystepuja jezyki z definiowaniem
> operatorow (inne niz c++, gdzie zresztą
> to definiowanie jest bardzo ograniczone -
> mozna sobie wyobrazic jezyk ze tak swobodnym
> definiowaniem operatorow jak funkcji, moze
> to skrociloby listingi choc trudno powiedziec)
>
> czy sa takie jezyki i jak to wyglada?
Haskell.
http://en.wikibooks.org/wiki/Haskell/More_on_functio
ns#Operators_and_sections
RW
-
7. Data: 2012-05-16 00:02:28
Temat: Re: jezyki z definiowaniem operatorow
Od: Wojciech Muła <w...@p...null.onet.pl.invalid>
Roman W wrote:
> On Tuesday, May 15, 2012 6:10:51 PM UTC+1, fir wrote:
>> czy wystepuja jezyki z definiowaniem
>> operatorow (inne niz c++, gdzie zresztą
>> to definiowanie jest bardzo ograniczone -
>> mozna sobie wyobrazic jezyk ze tak swobodnym
>> definiowaniem operatorow jak funkcji, moze
>> to skrociloby listingi choc trudno powiedziec)
>>
>> czy sa takie jezyki i jak to wyglada?
>
> Haskell.
>
> http://en.wikibooks.org/wiki/Haskell/More_on_functio
ns#Operators_and_sections
Także w SML-u.
w.
-
8. Data: 2012-05-16 01:00:30
Temat: Re: jezyki z definiowaniem operatorow
Od: Edek Pienkowski <e...@g...com>
Dnia Tue, 15 May 2012 21:39:36 +0100, Andrzej Jarzabek napisal:
> On 15/05/2012 18:10, fir wrote:
>> czy wystepuja jezyki z definiowaniem
>> operatorow (inne niz c++, gdzie zresztą
>> to definiowanie jest bardzo ograniczone -
>> mozna sobie wyobrazic jezyk ze tak swobodnym
>> definiowaniem operatorow jak funkcji, moze
>> to skrociloby listingi choc trudno powiedziec)
>>
>> czy sa takie jezyki i jak to wyglada?
>
> W Groovy można definiować operatory na podobnej zasadzie jak w C++.
>
> Ze swobodnym definiowaniem operatorów problem jest taki, że ich
> pierwszeństwo i stronność są określone gramatyką języka. Zmienianie tego
> na bieżąco przy pomocy samego programu w tym języku wydaje się
> problematyczne - być może, że wręcz prowadzi do nierozwiązywalnych
> problemów, a na pewno standardowy model skaner-parser-translacja
> trafiłby szlag.
>
> W wielu językach funkcyjnych natomiast (np. w różnych dialektach Lispa)
> w ogóle nie ma infiksowych operatorów, natomiast w porównaniu do
> typowych języków można stosować dość szeroki zestaw znaków w
> identyfikatorach. I tak pisze się (* (+ 2 2) (+3 4)), gdzie '+' i '*' są
> nazwami funkcji.
Tak więc w językach znanych przez kolegę "pierwszeństwo i stronność... "
- no, mądre słowo - "są określane przez gramatykę". Ale kolega ma świadomość
istnienia języków funkcyjnych. Hmm.
A gdyby tak powiedzieć, że nie musi tego określać gramatyka i że to byt
określa świadomość? Kurde, zaczynam rozumieć dlaczego niektórzy uważają OO
za szkodnika, strasznie sformatowało umysły. Podobnie jak fascynacja grami 2d
(pozdrowionka dla OP). (Reverse) polish notation nie jest równoważne ani
silnemu/słabemu typowaniu, ani językowi funkcyjnemu, ani też nie jest konieczne,
żeby + i * były zwykłymi funkcjami;
parsowanie nie ma tu wiele do rzeczy, tak tylko najpopularniejsze języki
dzisiaj mają, że najprościej jest implementować to w parserze. Kwestia
historyczna, wcześniej istniało expression parsing.
Edek
-
9. Data: 2012-05-16 01:58:25
Temat: Re: jezyki z definiowaniem operatorow
Od: Daniel Janus <n...@g...com>
W dniu wtorek, 15 maja 2012 18:10:51 UTC+1 użytkownik fir napisał:
> czy wystepuja jezyki z definiowaniem
> operatorow (inne niz c++, gdzie zresztą
> to definiowanie jest bardzo ograniczone -
> mozna sobie wyobrazic jezyk ze tak swobodnym
> definiowaniem operatorow jak funkcji, moze
> to skrociloby listingi choc trudno powiedziec)
Co rozumiesz przez "definiowanie operatorów"?
--D.
-
10. Data: 2012-05-16 02:07:12
Temat: Re: jezyki z definiowaniem operatorow
Od: Andrzej Jarzabek <a...@g...com>
On 16/05/2012 00:00, Edek Pienkowski wrote:
> Dnia Tue, 15 May 2012 21:39:36 +0100, Andrzej Jarzabek napisal:
>
> Tak więc w językach znanych przez kolegę "pierwszeństwo i stronność... "
> - no, mądre słowo - "są określane przez gramatykę". Ale kolega ma świadomość
> istnienia języków funkcyjnych. Hmm.
I?
> A gdyby tak powiedzieć, że nie musi tego określać gramatyka i że to byt
> określa świadomość?
Jeśli kolega ma do npisania coś konkretnego, to może kolega napisać, nie
wykluczam nawet, że z ciekawości przeczytam.
W przeciwnym razie, to co gdyby tak powiedzieć, że nie należy mnożyć
bytów ponad potrzebę i ceterum censeo że jak kolega ma tak chrzanić, to
mi się nie chce w ten sposób rozmawiać.
> Kurde, zaczynam rozumieć dlaczego niektórzy uważają OO
> za szkodnika, strasznie sformatowało umysły.
Może kolega o niesformatowanym umyśle wytłumaczy, jaki jest związek OO z
czymkolwiek, co napisałem?
> Podobnie jak fascynacja grami 2d
> (pozdrowionka dla OP). (Reverse) polish notation nie jest równoważne ani
> silnemu/słabemu typowaniu, ani językowi funkcyjnemu, ani też nie jest konieczne,
> żeby + i * były zwykłymi funkcjami;
Co z tego? W kontekście było samodzielne definiowanie operatorów. Jedno
z podejść do tematu jest takie, że to, co zwykle jest operatorem, np. +
i *, jest w tym języku zwykłą nazwą funkcji, którą można sobie
zdefiniować tak jak funkcję o dowolnej innej nazwie. Tak się akurat
składa, że to rozwiązanie jest stosowane w niektórych językach
funkcyjnych stosujących notację polską.
Natomiast że cośtam jest równoważne czemuśtam albo konieczne, to czy
znowu kolega sobie coś wyhalucynował na temat tego, co napisałem, czy to
tylko takie od czapy stwierdzenie bez związku z czymkolwiek, w stylu
"byt określa świadomość"?
> parsowanie nie ma tu wiele do rzeczy, tak tylko najpopularniejsze języki
> dzisiaj mają, że najprościej jest implementować to w parserze. Kwestia
> historyczna, wcześniej istniało expression parsing.
Znowu - jeśli kolega chce coś napisać na temat jakichś konkretnych
rozwiązań, to chętnie przeczytam.
Ze swojej strony rzucę jeszcze rozwiązaniem Tcl-a: tam w zasadzie jedyną
konstrukcją gramatyczną jest lista stringów, gdzie pierwszy element jest
traktowany jako nazwa polecenia, a pozostałe jako argumenty. Wyrażeń i
operatorów jako takich w języku nie ma, jest natomiast kilka wbudowanych
poleceń, które przyjmują argumenty będące wyrażeniem zapisanym w
stringu. Te wyrażenia mają swoją gramatykę i swoje operatory i funkcje.
W ramach tego przedefiniować za wiele się nie da, natomiast w ogóle
receptura na zdefiniowanie własnych operatorów jest prosta: można
stworzyć swój własny język wyrażeń, zaimplementować dla niego
interpreter i stworzyć swoje własne polecenia przyjmujące wyrażenia
napisane w owym języku: własnego expr na początek, ale dalej można
zrobić własną instrukcję warunkową, własne pętlę itd. Przy całej ogólnej
nieprzydatności tego języka do, like, czegokolwiek, do takich zabaw
akurat nadaje się on znakomicie.