[nem-pl] Re: =?us-ascii:iso-8859-2:utf-8?Q?=5Bnem-p?= =?us-ascii:iso-8859-2:utf-8?Q?l=5D_to_ja_znowu_o_sk=B3adni?=

Michal Moskal malekith at pld-linux.org
Wed Oct 29 14:01:03 CET 2003


On Wed, Oct 29, 2003 at 11:37:17AM +0100, Lukasz Kaiser wrote:
> Hej.
> 
> > Dodałem nowy sposób definiowania wartości.
> > ... 
> > 
> > Stara metoda jest dostępna, ale niezalecana. Znaczy mam nadzieję, się
> > jej pozbyć w najbliższym czasie, ale automatyczna konwersja istniejących
> > źródeł wydaje się trudna :/
> 
> Hmm, czemu ? Bo ja moge pisac def zamiast let i ; zamiast in, ale jesli sa
> wieksze problemy to wolalbym wiedziec.

Trzeba dookoła wszystkiego napisać { }.

> > Proszę o komentarze.
> 
> Ja tam sie boje. W tym sie za chwile nie bedzie dalo programowac
> normalnie, czyli funkcjonalnie i zrobimy nedzny update C#2. Nie wiem jak
> to bedzie z tymi defami, nie wiem jaki jest problem przy zamianie
> letow. 

Wcięcia i {}.

> Uwazam ze to glupio ze trzeba pisac ";" i nie mozna pisac
> "in" zamiast tego, ale jesli "in" nie bedzie slowem kluczowym to moge
> sobie zawsze s/in/;/g. Ale to mniej wazne, znacznie gorszy jest static. Ja
> bardzo przepraszam, ale normalnie to ja wpisuje glownie funkcje ktore nie
> sa metodami. Jak mam przy kazdej funkcji dopisac 6 liter bez potrzeby to
> ja na to nie ide, za duzo roboty.

W OCamlu musisz napisać 'let rec' (przeważnie), to 7 liter. W SML'u fun
i nazwę funkcji parę razy.

> Ale w ogole ja tego nie rozumiem, czemu
> jest:
> 
> class List
>   {
>     static 'a append (x : list ('a), y : list ('a)) : list ('a) =
>       match x with [
>         | Nil => y
>         | Cons ?x => Cons (x#hd, append (x#tl, y))
>       ];
>     ... 
>   }
>  
> ???
> 
> To znaczy co to jest ta class List ? Bo ja rozumiem ze klasa to taki typ,
> ktory ma zawsze te same funkcje, ale ja widze ze w tym
> jezyku sie nie da zdefiniowac normalnej funkcji. Normalna funkcja to taka,
> ktora nie dziala na obiektach jakiejs klasy tylko tak ogolnie, czyli chyba
> to co sie tutaj nazywa static. Jak juz ta funkcja ma koniecznie byc w
> czyms, to moze dla mnie byc w namespace, module, cokolwiek, ale nie w
> class z dodatkowym dopiskiem "static", to jest bez sensu. 

Moduł to klasa bez pól i metod (za to może mieć wartości, funkcje i
typy). Być może warto wprowadzić skłądnię:

module M {           class M {
  foo ...     ===>     static foo ...
}                    }

Ale zauważ, że to tylko składnia.

> Ja rozumiem ze
> ludzie programuja obiektowo, ale ten jezyk ma chyba dawac mozliwosc
> programowania nie obiektowego tez.

Daje, Twoim problemem jest dodatkowe 6 literek.

Składnia dla modułów być może nie byłaby zła.

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: PLD Linux ::::::::: Wroclaw University, CS Dept : {E-,w}-- {b++,e}>+++ h




More information about the devel-pl mailing list