Laboratorium 2: Pierwszy kontakt z Ocamlem
Uruchomienie interpretera Ocamla
W terminalu piszemy:
ab123456@komputer:~$ ocaml
2+3;;
^D
(nie działają strzałki itp :-( )
ab123456@komputer:~$ ledit ocaml
(dzialaja strzalki! :-)
Parę przykładów funkcji
let f x = x * x;;
let ma co = "Ala ma " ^ co;;
ma "kota";;
f "kota";;
(error)
let g x = (f x)^(f x);;
(error)
let h x = f (f x);;
h 7;;
h (f 7);;
max_int;;
max_int+1;;
let rec silnia n =
if n = 0 then 1 else n * (silnia (n-1));;
let rec powtorz n s =
if n = 0 then "" else s ^ (powtorz (n-1) s);;
let powt3 = powtorz 3;;
let powt_ala n = powtorz n "ala";;
Jak pracować z Ocamlem?
Sposób dla malutkich kawałków kodu
W terminalu wpisujemy ocaml
(lub lepiej ledit ocaml
).
W drugim okienku uruchamiamy edytor i co chwilę kopiujemy kod myszką.
Sposób upierdliwy dla większych kawałków kodu
W terminalu wpisujemy ocaml
(lub lepiej ledit ocaml
).
W drugim okienku uruchamiamy edytor z plikiem "plik.ml", co chwilę zapisujemy plik w edytorze i wpisujemy #use "plik.ml";;
(albo lepiej wychodzimy z Ocamla, wchodzimy ponownie i wtedy robimy #use "plik.ml";;
).
Uwaga: Pisząc #use
należy samemu wpisać # (hash - kratkę).
Sposób lepszy dla większych kawałków kodu
Używamy edytora emacs ze wsparciem dla ocamla.
Są jeszcze inne sposoby, ale o nich powiemy jak zaczniemy pracować z
z programami podzielonymi na wiele plików.
Konfiguracja i używanie Ocamla pod emacsem
Konfiguracja
Na końcu pliku ~/.emacs
należy dopisać:
;; Konfiguracja ocaml-mode
(setq auto-mode-alist (cons '("\.ml[iylp]?$" . caml-mode) auto-mode-alist))
(require 'caml)
(require 'camldebug)
(require 'caml-font)
A jeżeli w ogóle nie ma pliku ~/.emacs
, to kopiujemy go stąd.
Dodatkowe informacje o instalacji ocaml emacs, np. w domu:
http://www.cs.jhu. edu/~scott/pl/caml/emacs.html
Używanie Ocamla pod emacsem
- uruchomić:
emacs
- otworzyć plik z rozszerzeniem .ml (np. plik.ml), za pomocą menu, guziczka, Ctrl-X, Ctrl-F lub od razu uruchomić
emacs
poleceniem emacs plik.ml
,
- napisać kawałek kodu,
- wykonać (Caml -> Start subshell),
-
na pytanie "Caml toplevel to run: ocaml" odpowiadamy ENTER
(czyli zgadzamy się na "ocaml" -- tutaj mamy szansę podać np. jakieś opcje
wywołania polecenia ocaml, ale na razie nie potrzebujemy)
- wrócić do ramki z naszym plikiem,
- ustawić kursor _przed_ średnikami
;;
- wcisnąć Ctrl-c Ctrl-e (polecenie caml-eval-phrase),
-
definicja przed średnikami zostanie automatycznie "przerzucona" do interpretera Ocamla,
chyba że jest błędna -- wtedy zaznaczony zostanie fragment, w którym kompilator wykrył błąd,
(uwaga: oczywiście prawdziwy błąd może być zupełnie gdzie indziej ;-)
-
żeby "przerzucić" na raz większy kawałek kodu, zaznaczamy ten kawałek myszką
(lub zaznaczamy początek Ctrl-Space i ustawiamy kursor na końcu),
- następnie Alt-x caml-eval-region,
-
"toplevel" ocamla można też normalnie używać np. po to, by testować funkcje,
nie zaśmiecając przy tym pliku z definicjami.
W przypadku gdy chcemy rozpocząć pracę w ocamlu od nowa:
- zabijamy interpreter Ocamla (wchodzimy do niego kursorem i robimy C-x C-k, lub File->Close),
- otwieramy go ponownie (Start subshell),
Pierwsze wprawki w Ocamlu
- Zapisać funkcje omawiane na pierwszych ćwiczeniach (np. część wspólna prostokątów, przecinanie się odcinków) lub w tym tygodniu.
- Zapisać procedury obliczające liczby Fibonacciego, liniowo i wykładniczo, porównać ich działanie,
- Zapisać ogonowo i nieogono silnię czy inne zadania z ćwiczeń -- sprawdzić różnicę w działaniu dla większych argumentów,
-
Zaimplementuj kodowanie par liczb naturalnych jako liczby naturalne.
To znaczy, napisz procedurę dwuargumentową, która koduje dwie liczby dane jako argumenty w jednej liczbie naturalnej.
Dodatkowo napisz dwie procedury, które wydobywają z zakodowanej pary odpowiednio pierwszą i drugą liczbę.
Załącznik | Wielkość |
emacs. | 846 bajtów |