Возможно ли увидеть интерфейс загруженного модуля в интерактивном OCaml? Я (безуспешно) попытался найти такую возможность, и онлайн-документы/источники не то, что я ищу.OCaml - как увидеть интерфейс модуля?
5
A
ответ
6
Стандартный трюк для этого состоит в том, чтобы определить синоним модуля, который побуждает toplevel перечислить интерфейс.
$ ocaml
OCaml version 4.00.1
# #load "str.cma";;
# module S = Str;;
module S :
sig
type regexp = Str.regexp
val regexp : string -> regexp
val regexp_case_fold : string -> regexp
val quote : string -> string
val regexp_string : string -> regexp
val regexp_string_case_fold : string -> regexp
val string_match : regexp -> string -> int -> bool
. . .
val first_chars : string -> int -> string
val last_chars : string -> int -> string
end
1
В OCaml верхнего уровня версии 4.04.0, трюк определения синоним соответствующего модуля работает не более:
# module L = List;;
module L = List
#
, но вы можете использовать include
директиву:
# module L = struct include List end;;
module L :
sig
val length : 'a list -> int
val cons : 'a -> 'a list -> 'a list
val hd : 'a list -> 'a
val tl : 'a list -> 'a list
val nth : 'a list -> int -> 'a
val rev : 'a list -> 'a list
...
val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
end
#
+1
вы можете напрямую использовать директиву #show: #show List ;; – ghilesZ
3
Оба utop и ocaml переводчики добавили #show директива с момента. Он делает именно то, что вы хотите, как в следующем примере:
│ Welcome to utop version 1.19.3 (using OCaml version 4.04.0) │
└──────────────────────────────────────────────────────────────┘
Type #utop_help for help about using utop.
─(15:12:33)─< command 0 >──────────────────────────────────────{ counter: 0 }─
utop # #show List;;
module List :
sig
val length : 'a list -> int
val cons : 'a -> 'a list -> 'a list
val hd : 'a list -> 'a
...
val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
end
PS: Я использую 4.04 версию, но я знаю, что он также работает на 4.03> и, возможно, до этого тоже..
Смежные вопросы
- 1. Генерация модуля OCaml mock
- 2. Объем конструкторов модуля в OCaml
- 3. Ошибка модуля OCaml
- 4. Как увидеть открытый интерфейс класса?
- 5. OCaml с использованием параметризованного модуля
- 6. Ошибка связывания модуля в ocaml
- 7. Использование модуля включают в OCaml
- 8. Изменение поведения модуля в OCaml
- 9. полиморфного типа внутри модуля (OCaml)
- 10. OCaml верхнего уровня загрузки модуля
- 11. Как избежать затенения модуля stdlib в Ocaml?
- 12. Как создать doc для OCaml на основе подписей модуля?
- 13. Интерфейс модуля NaCl HTML
- 14. API-интерфейс модуля Prestashop
- 15. OCaml рекурсивных типов пересекающих «тип модуля =»
- 16. использование модуля первого класса в OCaml
- 17. Интерфейс с несколькими реализациями в OCaml
- 18. Ошибка при использовании модуля Z3 в OCaml
- 19. Использование модуля Str в верхнем уровне OCaml?
- 20. Тип ограничения для включения модуля в OCaml
- 21. Содержит ли компилятор OCaml истинный псевдоним модуля?
- 22. OCaml: несвязанная нагрузка при загрузке модуля
- 23. Интерфейс структурированного модуля для C
- 24. ocaml: utop, есть ли способ перечислить все функции модуля?
- 25. Правильный способ написания модульных тестов для модуля в OCaml
- 26. Интерфейс GSM-модуля с nodemcu
- 27. Интерфейс модуля тестирования при реализации
- 28. Печать OCaml AST как OCaml Код
- 29. Как переопределить определение типа при использовании модуля в OCaml?
- 30. Ocaml: Как скомпилировать файл с помощью модуля Http_Client.Convenience?
Удивительная идея, позор на ocaml за то, что вы не сделали это возможным, небрежным способом. Спасибо! – mkf
Я думаю, что эта функция должна быть предоставлена IDE для OCaml, а не компилятором OCaml. Так что не стыдно на OCaml :-) –
Я имел в виду интерактивную консоль для OCaml :), которая, похоже, называется тем, что вы называете IDE :) – mkf