OCaml
OCaml (Objective Caml) to obiektowy funkcyjny język programowania, który istnieje w wersji zarówno interpretowanej jak i kompilowanej, przy czym kompilowany Ocaml to jeden z najszybszych języków funkcyjnych. OCaml jest tworzony przede wszystkim we francuskim akademickim instytucie badawczym INRIA od 1985 roku. Jest dostępny na licencji LGPL.
Ocaml jest statycznie typizowany z inferencją typów.
Do Ocamla jest dość dużo bibliotek oraz istnieje ogromna liczba rozszerzeń i programów pomocniczych, takich jak:
- ocamldep - generuje zależności między modułami dla Makefile'a.
- ocamlcp - front end do ocamlc, dodający informacje profilujące
- ocamlprof - program interpretujący wyniki działania programów skompilowanych za pomocą ocamlcp
- ocamllex - generator lekserów dla ocamla, podobny do lex i flex dla C.
- ocamlyacc - generator parserów dla ocamla, podobny do yacc i bison dla C.
- ledit - frontend zapewniający edycje linii do ocamla.
- dbforge - program do tworzenia interfejsów do relacyjnych baz danych ODBC, MySQL i PostgreSQL
- zoggy - program do generowania interfejsów GTK+
- camlp4 - Pre-Procesor-Pretty-Printer do ocamla, umożliwia używanie praktycznie dowolnej składni, np. składni Lispowej.
- i wiele innych
Programy napisane w Ocamlu zajmują czołowe miejsca w ICFP Programming Contest.
Ocaml wywodzi się z rodziny języków Meta Language, podobnie jak Standard ML.
Spis treści |
Używanie Ocamla z poziomu powłoki
Uwaga: Informacje te odnoszą się do systemów uniksowych. W innych systemach pewne rzeczy należy wykonywać inaczej.
Pliki źródłowe ocamla mają rozszerzenie ml, pliki z sygnaturami - odpowiednik plików nagłówkowych w C - rozszerzenie mli. Nie ma tu jednak żadnego preprocesora i literalnego włączania nagłówków - pliki sygnaturowe są najzwyczajniej kompilowane. Zwykle nie ma potrzeby tworzenia osobnych plików sygnaturowych i Ocaml automatycznie generuje sygnatury na podstawie plików ml.
Istnieją trzy sposoby wykonywania programów ocamlowych:
- za pomocą interpretera - komenda ocaml
- kompilacja do binarnej postaci interpretowanej - komenda ocamlc. Program ten przetwarza jedynie tekst na struktury interpretera. Uruchomienie takiego programu powoduje uruchomienie interpretera, który wykonuje instrukcje zapisane w pliku wykonywalnym. Podobne rozwiązanie było używane w Visual Basicu. Jest przydatne głównie podczas programowania, raczej nie powinno być stosowane do tworzenia dystrybucji binarnej.
- kompilacja do kodu maszynowej - komenda ocamlopt. Tworzy bardzo szybki program, który nie wymaga żadnych zewnętrznych bibliotek oprócz libc. Kompilacja dużego programu zajmuje dość dużo czasu, więc w trakcie programowania praktyczniejsze może być korzystanie z ocamlc.
W wyniku działania kompilatorów Ocamla powstają pliki:
- cmi - skompilowane pliki sygnaturowe, takie same w ocamlc i ocamlopt
- cmo - pliki modułów dla ocamlc
- o - zwykłe pliki obiektowe, tworzone przez ocamlopt
- cmx - pliki z dodatkowymi informacjami na temat modułów, tworzone przez ocamlc
- pliki wykonywalne (bez rozszerzenia):
System typów
System typów opiera się na typach bazowych takich jak:
int
Czyli liczby całkowite. Operacje na nich to m.in. +, -, *, /.
let x = 2 + 2 * 2;; print_int x;;
float
Liczby zmiennoprzecinkowe mają osobny zestaw operacji, co zmniejsza znacznie czytelność, ale jest konieczne ze względu na sposób działania systemu inferencji typów.
Operacje te zwykle kończą się kropką, np. +., -., *., /..
let y = 2.0 +. 2.0 *. 2.0;; print_float y;;
char
Pojedyncze znaki umieszcza się w pojedynczym cudzysłowie:
let c = '\n';; print_char c;;
Do zamieniania znaków na ich wartości numeryczne i na odwrót służą int_of_char oraz char_of_int.
string
Łańcuchy tekstowe umieszcza się w podwójnym cudzysłowie:
let s = "Ala ma kota\n";; print_string s;;
bool
Wartości logiczne - true i false. Operacje to not, ||, && itd.
unit
Typ pusty, wartość tylko ().
Oraz na typach pochodnych takich jak:
Listy elementów danego typu
Lista elementów danego typu to 'a list, np. [1; 2; 3] to lista typu int list, a [2.71; 3.14; 6.28] to lista typu float list.
Krotka
Krotka to zestaw ustalonej liczby wartości o przyporządkowanych im na stałe, lecz niekoniecznie tych samych, typach zmiennych. Krotką jest np. para (2, "napis"), czy trójka (3, 2, 3.14). Branie krotek w nawiasy nie jest konieczne, lecz zwiększa czytelność programu.
Alternatywy
Alternatywa to zestaw konstruktorów, które mogą być parametryzowane (wtedy typ ma podwartości równe wszystkim możliwym wartościom parametru) bądź też nie (istnieje tylko jedna wartość z takim konstruktorem). Jeśli potrzebny jest konstruktor, który przyjmuje więcej niż jeden parametr, używa się krotki.
Na przykład zdefiniujmy typ foo mający dwa konstruktory - Foo o parametrze int i Bar o parametrze string:
type foo = Foo of int | Bar of string;; let print_foo = function Foo n -> print_int n | Bar s -> print_string s ;; print_foo (Foo 2);; print_foo (Bar "Napis")
Przykładem predefiniowanej polimorficznej alternatywy jest typ 'a option. Np. dla typu int option poprawnymi wartościami są None i Some 4.
Przykładowy kod
(* komentarz *) let rec fib n = if n < 2 then n else fib (n-1) + fib (n-2) ;; (* inny sposób, wykorzystujący dopasowanie do wzorca *) let rec fibb = function | 0 -> 0 | 1 -> 1 | n -> fibb (n-1) + fibb(n-2) ;; print_string "Hello, world !\n";; print_int (fib (2+2*2));; print_newline ();;
Zobacz też
Linki zewnętrzne
- "Developing Applications With Objective Caml" - książka na temat Ocamla dostępna w sieci
- The Caml language
- Caml Development Kit
|
|||||||||||||||||||||||||||||
| Gry komputerowe Gry komputerowe, piłkarskie, sport… www.euro-mistrzostw… | poradniki do gier www.gry.mocny.com | Firany www.finezja-studio.… | Darmowe gry darmowe gry, gry www.gry.emity.pl | pomoc domowa Warszawa Agencja Dudek www.agencjadudek.pl |
Być może zainteresują Cię strony:
pzu telewizory ranking uczelni tworzenie stron czarter jachtów giżycko
Nauka na Focus.pl
Dieta na sto lat
Kiełki brokułu, kawior i jeżyny popite zieloną herbatą – takie menu proponują nam naukowcy. Na szczęście superzdrowa dieta przyszłości nie musi być monotonna
Thu, 29 Jul 2010 09:00:00 +0200
Twoja przyszłość w DNA
Jeszcze 40 lat temu testy genetyczne były zaliczane do fikcji literackiej. Dziś na rynku jest ich ponad 900, ale prawdziwa rewolucja dopiero przed nami
Tue, 27 Jul 2010 09:00:00 +0200
Szukamy piątego elementu
Czy na nasze organizmy działa jakaś nieznana jeszcze nauce siła, odpowiedzialna np. za zjawiska paranormalne? Zdaniem badaczy jest to możliwe
Mon, 26 Jul 2010 09:00:00 +0200
Łowcy spadających gwiazd
Czy może być coś bardziej romantycznego niż poszukiwanie skarbów? Szukanie meteorytów! Blask garnka pełnego złotych monet blednie przy kosmicznych kamieniach
Wed, 21 Jul 2010 09:00:00 +0200
Wzór na rzeczywistość
Fraktale można dostrzec wszędzie – w kształtach chmur, budowie kalafiora, rozgałęzieniach naczyń krwionośnych. Czy to przypadek? Zdaniem uczonych te miłe dla oka wzorki mogą pomóc nam zrozumieć zjawiska tak fundamentalne, jak zmiany klimatyczne czy struktura wszechświata
Sun, 18 Jul 2010 09:00:00 +0200
Historia na Focus.pl
Agentka w synagodze
Karin Mylius została pierwszym rabinem w dziejach Niemiec. Nie była jednak Żydówką, lecz utalentowaną agentką Stasi
Fri, 30 Jul 2010 16:00:00 +0200
Wycieczka Focusa - okolice Ostrowca
Nieczynny kamieniołom w Zachełmiu w Górach Świętokrzyskich stał się na początku 2010 roku źródłem sensacji na skalę światową.
Fri, 30 Jul 2010 09:00:00 +0200
Koniec baśni o samozwańcu
Jan Faustyn Łuba śnił o moskiewskim tronie, a przeżył koszmar. Rzeczpospolita marzyła o straszaku przeciw Moskwie, lecz spotkało ją upokorzenie. Król Władysław IV widział się w roli krzyżowca, ale zaskoczyła go śmierć
Thu, 29 Jul 2010 16:00:00 +0200
Zmora Kremla
Nie musimy się wstydzić tego, jak 400 lat temu walczyliśmy o tron carów. A czy powinniśmy żałować, że nam się nie udało? Nasze imperium i tak nie przetrwałoby do dziś
Wed, 28 Jul 2010 16:00:00 +0200
Wycieczka Focusa - okolice Szczecinka
Niedaleko od miejscowości Brzeźnica-Kolonia znajduje się obszar, którego przeznaczenie nie jest do końca znane. Istniejące tam budynki postawiono w latach 1972–1978 i kiedyś stacjonowały tu wojska radzieckie, a mówiąc ściślej 300 żołnierzy i oficerów z rodzinami.
Wed, 28 Jul 2010 09:00:00 +0200
Cywilizacja na Focus.pl
Z notatnika negocjatora
Centrum Warszawy, wieżowiec przy rondzie ONZ. Około godziny 17 w banku zjawia się 50-letni mężczyzna. Nerwowo lustruje główne pomieszczenie, następnie wraca do holu i wchodzi do pomieszczenia administracyjnego
Wed, 28 Jul 2010 17:43:00 +0200
Koniec niewinności
Nastolatki nigdy nie były święte, ale teraz idą na całość. Po raz pierwszy w historii dorównują chłopcom zachowaniem, a niektórzy twierdzą, że są od nich gorsze. Dlaczego się wykoleiły?
Sat, 24 Jul 2010 09:00:00 +0200
Wyjazd z gabloty
Nowoczesne muzea zamieniają się w multipleksy. Stawiają na rozrywkę i zarabiają krocie. Można w nich spędzać całe dnie i, ucząc się, dobrze się bawić
Fri, 23 Jul 2010 09:00:00 +0200
Jasnowidze z CIA
Jest w tym więcej prawdy, niż może się wydawać – uprzedzają twórcy filmu o absurdalnym tytule i nie mniej absurdalnej fabule. „Człowiek, który gapił się na kozy” to opowieść o tajemnicach amerykańskiej armii, które ujawnił członek oddziału żołnierzy ze zdolnościami parapsychologicznymi
Thu, 22 Jul 2010 09:00:00 +0200
Bloki dla ludzi
Blokowiska nie muszą straszyć. Mogą być wspaniałym miejscem do życia. Po latach niełaski bloki znowu zaczynają się podobać: architektom i zwykłym mieszkańcom
Tue, 20 Jul 2010 09:00:00 +0200
Nauka na Onet.pl
Duża asteroida może grozić Ziemi zderzeniem
Asteroida o średnicy 560 metrw może w przyszłości zderzyć się z Ziemią. Groźba takiej katastrofy w najbliższych dziesięcioleciach jest niewielka, jednakże wzrośnie znacząco, kiedy to ciało niebieskie zbliży się do naszej planety w 2182 roku.
Fri, 30 Jul 2010 15:10:00 GMT
Życie w kosmosie? Dowd sprzed 4 miliardw lat
Naukowcy zajmujący się badaniami powierzchni Marsa odkryli, że w niektrych ze znajdujących się tam skał mogą znajdować się ślady życia ukryte w minerałach - informuje serwis BBC News.
Fri, 30 Jul 2010 10:11:00 GMT
Rodzaj znieczulenia wpływa na ryzyko infekcji po operacji
Ryzyko miejscowej infekcji u pacjentw po operacji wymiany stawu biodrowego lub kolanowego, jest większe jeśli zastosowano znieczulenie oglne, a nie rdzeniowe lub zewnątrzoponowe - wynika z pracy, ktra ukaże się w sierpniowym wydaniu pisma "Anesthesiology".
Fri, 30 Jul 2010 09:22:00 GMT
Nowy akcelerator w CERN
Działający od niedawna, pod Genewą, słynny akcelerator LHC (Wielki Zderzacz Hadronw) ma kształt zamkniętej pętli. Tymczasem fizycy myślą już o budowie nowego przyspieszacza cząsteczek. Tym razem w kształcie linii prostej - informuje serwis "Physorg".
Thu, 29 Jul 2010 22:54:00 GMT
Wodowanie specjalistycznego statku
W Stoczni Gdańsk S.A. w piątek zostanie zwodowany specjalistyczny statek o nazwie "Fugro Symphony". Jednostka wyposażona m.in. w trzy dźwigi i lądowisko dla helikopterw służyć będzie obsłudze grnictwa morskiego.
Thu, 29 Jul 2010 22:50:00 GMT
Ciekawostki na Onet.pl
Inwazja papug na Brukselę
Zabytkowy rynek, Atomium, instytucje UE i pomnik siusiającego chłopca Manneken-Pis to szeroko znane atrakcje Brukseli. Mało kto jednak wie, że w stolicy Belgii żyje od lat na wolności jedna z największych w Europie, w dodatku stale rosnąca, populacja... papug.
Fri, 30 Jul 2010 09:18:00 GMT
Skanery ciała nie dość, że rozbierają, to jeszcze promieniują
Nowe skanery ciała, ktre wprowadzono niedawno na amerykańskich i niektrych brytyjskich lotniskach, mogą emitować znacznie większe dawki promieniowania, niż dotychczas sądzono.
Thu, 29 Jul 2010 22:15:00 GMT
Nowe, lecznicze właściwości pieprzu
Najnowsze badania dowodzą, że pieprz pomaga obniżyć ryzyko choroby serca. Naukowcy kanadyjscy rozpoczęli badania na grupie 200 osb, ktre przez miesiąc będą zażywać kapsułki zawierające 2,8 grama pieprzu dziennie.
Thu, 29 Jul 2010 22:14:00 GMT
Prehistoryczne stwory rozwijały skomplikowane cechy
Prehistoryczne stworzenia rozwijały bardzo skomplikowane cechy, aby przyciągać osobniki płci przeciwnej.
Thu, 29 Jul 2010 22:13:00 GMT
Wisiorek za 5 dolarw okazał się wart 10 tys. dolarw
Pewna mieszkanka Cleveland kupiła na garażowej wyprzedaży wisiorek z miniaturką koszulki koszykarza LeBrona Jamesa i dopiero po 5 latach odkryła jego prawdziwą wartość.
Thu, 29 Jul 2010 22:12:00 GMT

