🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.funkcyjne
7 messages
7 total messages Started by Jacek Konieczny Mon, 06 Jan 2003 11:42
OCAML: wyciąganie sygnatury modułu
#156
Author: Jacek Konieczny
Date: Mon, 06 Jan 2003 11:42
24 lines
1900 bytes
Witam,

Postanowiłem nauczyć się jakiegoś języka funkcyjnego i wybrałem ocamla,
bo słyszałem ża najpraktyczniejszy. No i nawet jakoś mi idzie, a
odczucia co do niego mam dość mieszane... ale ja nie o tym :-)

Piszę program składający się z kilku modułów. Na razie nie tworzyłem
plików *.mli, bo łatwiej mi się pracuje gdy mam jeden plik na moduł do
pilnowania. Jednak teraz chciałbym oddzielić interfejs od implementacji,
a że jestem raczej leniwy, to się zastanawiam, czy można to jakoś
zautomatyzować. ocamlbrowser pokazuje sygnaturę skompilowanego modułu,
ale to jest GUI, ja wolałbym coś z command-line. Jest coś takiego?

Druga sprawa: jeżeli w module mam zdefiniowany typ, to jego deklaracja
musi się znaleźć zarówno w *.ml jak i *.mli? Wydaje mi się to
niepotrzebne, ale mam wrażenie że tak być musi :-(

BTW. strasznie pusto na tej grupie. Myślałem że tu się coś o językach
funkcyjnych dowiem, a okazało się, że sam musiałem się w to zagłębiać...
Z tych paru postów które pojawiły się na tej grupie (pomijam te o
Excelu) nie zrozumiałem ani słowa :-)

Pozdrowienia,
        Jacek
Re: OCAML: wyciąganie sygnatury modułu
#157
Author: Adam Przybyla
Date: Mon, 06 Jan 2003 11:54
9 lines
1380 bytes
Jacek Konieczny <jajcus@bnet.pl> wrote:
> BTW. strasznie pusto na tej grupie. Myślałem że tu się coś o językach
> funkcyjnych dowiem, a okazało się, że sam musiałem się w to zagłębiać...
> Z tych paru postów które pojawiły się na tej grupie (pomijam te o
> Excelu) nie zrozumiałem ani słowa :-)
	... tutaj to chyba tylko z pytaniami, bo wyglada na to
ze kazdy zna tu inny jezyk funkcyjny, trudno sie dogadac;-))
Z powazaniem
								Adam Przybyla
Re: OCAML: wyciąganie sygnatury modułu
#158
Author: Tomasz Zielonka
Date: Mon, 06 Jan 2003 16:07
30 lines
1946 bytes
Jacek Konieczny napisał:
> Witam,
> 
> Piszę program składający się z kilku modułów. Na razie nie tworzyłem
> plików *.mli, bo łatwiej mi się pracuje gdy mam jeden plik na moduł do
> pilnowania. Jednak teraz chciałbym oddzielić interfejs od implementacji,
> a że jestem raczej leniwy, to się zastanawiam, czy można to jakoś
> zautomatyzować. ocamlbrowser pokazuje sygnaturę skompilowanego modułu,
> ale to jest GUI, ja wolałbym coś z command-line. Jest coś takiego?

Opcja -i kompilatora.

> Druga sprawa: jeżeli w module mam zdefiniowany typ, to jego deklaracja
> musi się znaleźć zarówno w *.ml jak i *.mli? Wydaje mi się to
> niepotrzebne, ale mam wrażenie że tak być musi :-(

Nie musi, jeśli ten typ nie jest eksportowany, tzn. nie jest widoczny w
interfejsie. 

Są też typy abstrakcyjne, których reprezentacji nie podaje się w
interfejsie - może tak spróbuj.

> Pozdrowienia,
>         Jacek

pozdrawiam,
tomek

-- 
.signature: Too many levels of symbolic links
Re: OCAML: wyciąganie sygnatury modułu
#159
Author: Jacek Konieczny
Date: Mon, 06 Jan 2003 17:16
29 lines
1978 bytes
In article <slrnb1jaeh.omf.t.zielonka@zodiac.mimuw.edu.pl>, Tomasz
Zielonka wrote:
> Jacek Konieczny napisał:
>> zautomatyzować. ocamlbrowser pokazuje sygnaturę skompilowanego modułu,
>> ale to jest GUI, ja wolałbym coś z command-line. Jest coś takiego?
> 
> Opcja -i kompilatora.

Dzięki.
Wiele razy szukałem tego, także w manualu do ocalmc, ale nie mogłem tego
znaleźć. Teraz widzę, że tam jest jak byk opcja "-i"....

>> musi się znaleźć zarówno w *.ml jak i *.mli? Wydaje mi się to
>> niepotrzebne, ale mam wrażenie że tak być musi :-(
> 
> Nie musi, jeśli ten typ nie jest eksportowany, tzn. nie jest widoczny w
> interfejsie. 
> 
> Są też typy abstrakcyjne, których reprezentacji nie podaje się w
> interfejsie - może tak spróbuj.

Ja chciałem w drugą stronę: mieć typ zdefiniowany tylko w interfejsie.
Podobnie jak jest w innych językach: w (Turbo)Pascalu typ wystarczy
zdefiniować w "interface" unitu, w C w pliku nagłówkowym włączanym przez
bibliotekę, jak i programy z niej korzystające. No ale w ocamlu chyba
jest inaczej.

Pozdrowienia,
        Jacek
Re: OCAML: wyciąganie sygnatury modułu
#160
Author: Lucifer
Date: Mon, 06 Jan 2003 19:36
18 lines
1727 bytes
Jacek Konieczny wrote:

> Ja chciałem w drugą stronę: mieć typ zdefiniowany tylko w interfejsie.
> Podobnie jak jest w innych językach: w (Turbo)Pascalu typ wystarczy
> zdefiniować w "interface" unitu, w C w pliku nagłówkowym włączanym przez
> bibliotekę, jak i programy z niej korzystające. No ale w ocamlu chyba
> jest inaczej.

Nie wiem na ile to legalne, ale w pliku foo.ml (do ktorego istnieje plik 
foo.mli lub jakis inny .mli) dopisz:

include Foo (* includujesz interface *)

Poza tym, kiedy includujesz "wlasny" interface cos niedobrego dzieje sie 
przy generowaniu zaleznosci (ocamldep) kiedy uzywasz OCamlMakefile.

-- 
Lucifer
Re: OCAML: wyciąganie sygnatury modułu
#161
Author: Tomasz Zielonka
Date: Mon, 06 Jan 2003 19:41
26 lines
1827 bytes
Jacek Konieczny napisał:
> 
> Ja chciałem w drugą stronę: mieć typ zdefiniowany tylko w interfejsie.
> Podobnie jak jest w innych językach: w (Turbo)Pascalu typ wystarczy
> zdefiniować w "interface" unitu, w C w pliku nagłówkowym włączanym przez
> bibliotekę, jak i programy z niej korzystające. No ale w ocamlu chyba
> jest inaczej.

Można to obejść tworząć oddzielny, samotny plik .mli (bez
odpowiadającego mu .ml) i w nim zdefiniować tylko typy.

To działa, choć nie znalazłem w dokumentacji (bo nie szukałem)
informacji o tym, że można tak robić. W razie czego można sobie zrobić
Makefile, który będzie kopiwał .mli na .ml po aktualizacji.

PS. Z tego co pamiętam, to Clean pozwala pomijać w dcl'ach deklaracje z
    icl'i.

> Pozdrowienia,
>         Jacek

pozdrawiam,
tomek

-- 
.signature: Too many levels of symbolic links
Re: OCAML: wyciąganie sygnatury modułu
#162
Author: Tomasz Zielonka
Date: Mon, 06 Jan 2003 19:47
16 lines
1426 bytes
Jacek Konieczny napisał:
> BTW. strasznie pusto na tej grupie. Myślałem że tu się coś o językach
> funkcyjnych dowiem, a okazało się, że sam musiałem się w to zagłębiać...
> Z tych paru postów które pojawiły się na tej grupie (pomijam te o
> Excelu) nie zrozumiałem ani słowa :-)

Może zorganizujemy sobie jakieś konkursy w stylu perl-golfa na
pl.comp.lang.perl?
Na przykład na najkrótsze / najbardziej eleganckie rozwiązania dla
jakichś małych problemów? :)

pozdrawiam,
tomek

-- 
.signature: Too many levels of symbolic links
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads