Jestem kompletnie początkującym programistą Ocaml i mam problemy z połączeniem modułu z moim programem. Właściwie robię pewne regularne sprawdzanie wyrażeń i napisałem funkcję, która zasadniczo tokenizuje ciąg na podstawie ciągu separatora, używając Str module. Więc mogę używać funkcji zdefiniowanych w bibliotece tak:Moduł łączenia błędów w ocaml
Str.regexp_string /*and so on*/
Jednak gdy próbuję skompilować plik ml, otrzymuję błąd sugerując, że mam niezdefiniowanej globalnego Str. Używamy funkcji List poprzez wpisanie w List.length i tak samo jak robiłem dla Str bez konieczności jawnego dołączania konkretnego modułu. Próbowałem
open Str;;
include Str;; /*None of these work and I still get the same error*/
Jednak jeśli w Toplevel używam
load "str.cma" /*Then the program works without problems*/
Chcę to moduł w pliku ml bo mam w linku koniec 3 CMO, aby uzyskać ostateczną wykonywalnego (który nie jest uruchamiany na ekranie). Wiem, że to naprawdę podstawowe pytanie, ale mam problem z jego rozwiązaniem. Z góry dziękuję.
Nie sądzę, aby twoje rozwiązanie działało, ponieważ wspomniał, że chce połączyć wygenerowane pliki ".cmo". Więc jeśli spróbuję skompilować prostą, która korzysta z niektórych funkcji modułu "Str" i skompilować go tak, jak powiedziałeś. Jeśli załaduję plik ".cmo", nadal pojawia się błąd informujący o niezdefiniowanym globalnym Str –
Pytanie dotyczy łączenia niezależnego programu.Odpowiedź na toplevel jest nieco inna. W większości możesz załadować Str, wypowiadając '#load" str.cma "'. –
... lub wywołanie 'ocaml' toplevel z' ocaml str.cma'. – nlucaroni