Ist es möglich, die Schnittstelle eines geladenen Moduls in interaktiven OCaml zu sehen? Ich habe (erfolglos) versucht, nach einer solchen Möglichkeit zu suchen, und Online-Dokumente/Quellen sind nicht das, wonach ich suche.OCaml - wie man die Schnittstelle des Moduls sieht?
Antwort
Der Standardtrick dafür ist, ein Synonym für das Modul zu definieren, das die Toplevel zum Auflisten der Schnittstelle veranlasst.
$ 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
In OCaml Toplevel-Version 4.04.0, der Trick eines Moduls Synonym für die Definition funktioniert nicht mehr:
# module L = List;;
module L = List
#
aber die include
Direktive verwenden:
# 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
#
können Sie direkt die # show-Anweisung verwenden: #show-Liste ;; – ghilesZ
Beide utop und ocaml Dolmetscher hinzugefügt die #show Direktive seit einem Moment. Es tut genau das, was Sie wollen, wie im folgenden Beispiel:
│ 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: Ich verwende 4,04 Version, aber ich weiß, dass es auch für 4,03 funktioniert> und vielleicht vor das auch..
- 1. Fehler beim Verknüpfen des Moduls in ocaml
- 2. Wie man den Abhängigkeitsbaum eines gegebenen npm Moduls sieht?
- 3. Wie man Übergang wie Einstellung des Systems iOS sieht?
- 4. Wie sieht man AST?
- 5. Wie sieht eine Beziehung "Schnittstelle erweitert Schnittstelle" in UML aus?
- 6. Kann die Funktion des Moduls nach browserify
- 7. Wie sieht man Repositories?
- 8. Wie man Maschinencode sieht?
- 9. AngularJS: Wie sieht man die Tab-Auswahl?
- 10. Wie sieht man die Funktionssignatur in Python?
- 11. OCaml-Typ des Plusoperators
- 12. OCaml - wie man file.ml lädt
- 13. Wie sieht man entfernte Tags?
- 14. Wie sieht man den Dateiunterschied?
- 15. Surpress Scapy Warnmeldung beim Importieren des Moduls
- 16. Wie ändere ich die Position des Magento Cart Moduls?
- 17. Drupal: Anpassen des Aussehens des WorkFlow-Moduls
- 18. Magento: Ändern des Newsletter-Moduls
- 19. Importieren des Lync/Skype-Moduls
- 20. Dateipfad des importierten Moduls abrufen
- 21. CVS-Unterpfad des Moduls exportieren
- 22. Wie man OCaml-Projekt bequem umgestaltet?
- 23. Attribute des Python-Moduls `this`
- 24. Warnung zum Kompilieren des Moduls
- 25. Position des Linux-Kernel-Moduls
- 26. Schnittstelle, die die Implementierung des Indexers
- 27. Wie implementiert man die Schnittstelle in Ada?
- 28. Wie implementiert man die Java-vergleichbare Schnittstelle?
- 29. Wie beschreibt man die WebSocket-Schnittstelle?
- 30. Wie überprüft man, ob die Schnittstelle ist
Awesome Idee, Schande über Ocaml für nicht möglich machen es auf nicht-hacky Weise. Vielen Dank! – mkf
Ich denke, diese Funktion sollte von einer IDE für OCaml bereitgestellt werden, nicht vom OCaml-Compiler. Also keine Schande über OCaml :-) –
Ich meinte die interaktive Konsole für OCaml :) die scheint, was Sie eine IDE nennen :) – mkf