ocamlyacc 및 ocamllex를 사용하고 있습니다. 내 문법에 오류 생성이있어 사용자 지정 예외가 발생했습니다. 지금까지 오류 위치를보고 할 수 있습니다. | error { raise (Parse_failure (string_of_position (symbol_start_pos()))) }
그러나 어떤 토큰을 읽었는지 알고 싶습니다. 방법이 있어
ocaml 언어 사양에는 짧은 섹션이 있습니다. poly-typexpr ::= typexpr
| { ' ident }+ . typexpr
텍스트에는 설명이 없으며 poly-typexpr의 유일한 인스턴스는 메소드 유형을 정의하는 데 있습니다. method-type ::= method-name : poly-typexpr
나 할래?
가능한 중복 : 나는 OCaml의에 대해 잘 모르는 In Functional Programming, what is a functor? , 나는 몇 시간 동안 F 번호를 공부하고 확실히 이해했습니다. 그들은 F #이 OCaml에있는 functor 모델을 놓쳤다 고합니다. 나는 정확하게 functor가 무엇인지 알아 내려고 노력했지만 wikipedia와 튜토리
나는 ~ 30,000 줄의 심하게 들여 쓰기 된 OCaml 코드 (mly와 mll 파일 포함)를 들여 쓰고 싶습니다. 나는 'ocaml 들여 쓰기'의 변형에 대한 검색을 시도했는데 Omlet.vim을 사용하고 한 번에 한 줄 씩 코드를 들여 쓰기 (삽입 모드에서 C-f 사용) 할 수 있습니다. 모든 30000 라인의 들여 쓰기를 수행 할 수있는 방법이 있습
빈을 정의하는 방법을 알고 싶습니다! OCaml에서 Hashtbl 타입의 전역 변수? 초기 크기를 모르고 성능상의 이유로 초기 크기를 추측하고 싶지 않기 때문에 Hashtbl.create를 사용하고 싶지 않습니다. 기본적으로이 Hashtbl 변수는 함수에서 실제 Hashtbl을 할당 한 다음이 변수를 다른 함수와 공유하므로 항상 인수로 전달하지 않으려 고합
의 컬렉션에 반복자를 연결하는 데 어떻게 class type ['a] collection =
object
method add : 'a -> unit
method clear : unit -> unit
method iterator : unit -> 'a iterator
method remove : 'a -> unit
다음과 같은 유형을 정의하려고합니다. 유형 aaa = NULL | {a : int; b : int} ;; 하지만 컴파일러는 허용하지 않습니다. 레코드 유형을 다른 것과 혼합 할 수없는 이유가 확실하지 않습니다. 레코드 유형 또는 널 레코드이고 {a = -999; b = -999}. 더 좋은 방법은 무엇입니까?
ocamlfind에 OCaml 컴파일러와 최상위 레벨을 모두 사용하려고합니다. 내가 이해 한 것으로부터 프로젝트 라이브러리의 _tags 파일에 필요한 라이브러리를 배치해야합니다. ocamlfind 도구를 사용하면로드가 가능하므로 내 모듈에서 열 수 있습니다 : <*>: pkg_sdl,pkg_str
내가 분명히 내 프로젝트를 컴파일 wan't 제공의 oc