OCaml repl ("최상위 레벨")은 사용자 정의 또는 다른 유형의 모든 유형에 대해 풍부한 인쇄 기능을 제공합니다. 자신 만의 전체 유형 세트에 대해 가치있는 프린터 세트를 작성하는 대신 최상위 레벨 외부에서이 기능에 액세스 할 수 있습니까?OCaml 값은 어떻게 최상위 외부에서 인쇄 될 수 있습니까?
13
A
답변
11
예쁜 인쇄 시설은 최상위 라이브러리의 일부입니다. 출처는 toplevel/genprintval.ml
입니다. 유형 정보가 필요하다는 점을 고려하면 이해할 만합니다. 단지 값을 던질 수는 없으며 예쁘고 프린터를 선택하는 것은 유형에 기반합니다.
당신이 당신의 프로그램에서이 코드를 사용하려면, 그것은 수, 당신은 최상위 라이브러리 (toplevellib.cma
)와 연결해야하거나 유형을 분석하는 유형 검사의 충분한 비트에 데려 의미한다 (genprintval
컴파일 꽤 크게된다).
디버거 (debugger/printval.ml
및 debugger/loadprinter.ml
)와 비슷한 기능이 있지만 (코드를 공유하지는 않습니다.) 디버거에 있습니다.
직접 연결할 수 있고 예쁜 인쇄 기능을 제공하는 타사 라이브러리가 있습니다. Extlib의 Std.dump
은 매우 조잡한 시설을 제공합니다 (유형에 기반하지 않음). Jeremy Yallop 및 Jake Donham의 Deriving이 또 다른 접근 방법입니다. This Caml Weekly News item은 더 많은 제안을 제공합니다.
10
관련 문제
- 1. 다른 OCaml 최상위 프로그램에는 어떤 것들이 있습니까? (Vista)
- 2. OCaml : List.fold_left는 어떻게 작동합니까?
- 3. 숫자 (int)의 인쇄 값은
- 4. 부분적으로 추측 된 타이핑 정보를 들여다 볼 수 있습니까? 컴파일하지 않는 프로그램을위한 Ocaml 최상위/컴파일러에서?
- 5. 이 ocaml 패턴 일치 코드를 어떻게 단순화 할 수 있습니까?
- 6. 어떻게 호스트의 IP를 인쇄 할 수 있습니까?
- 7. 어떻게 파이썬에서 PDF를보고 인쇄 할 수 있습니까?
- 8. 어떻게 날짜를 onclick으로 인쇄 할 수 있습니까?
- 9. 어떻게 테이블에 인쇄 할 수 있습니까?
- 10. 메서드가 외부에서 액세스 될 때 Java 스레드는 어떻게 작동합니까?
- 11. iPhone 앱에서 외부에서 볼 수 있는지 어떻게 알 수 있습니까?
- 12. 북마크 조회가 어떻게 무시 될 수 있습니까?
- 13. 코드가 어떻게 Restful을위한 리소스가 될 수 있습니까?
- 14. Wordpress에서 어떻게 새로운 최상위 메뉴를 만들 수 있습니까?
- 15. OCaml 프로그램에서 AST를 얻을 수 있습니까?
- 16. 외부에서 루프를 끊을 수 있습니까?
- 17. ocamlbuild; 건물 최상위 수준
- 18. 파이썬에서 최상위 변수를 어떻게 설정합니까?
- 19. Windows 스레드의 반환 값은 어떻게 얻을 수 있습니까?
- 20. 유형이 지정되지 않은 객체의 값은 어떻게 얻을 수 있습니까?
- 21. 이벤트가 발생하면 함수가 어떻게 트리거 될 수 있습니까?
- 22. 어떻게 외부에서 변경되는 부분에 대해 iphone 앱을 볼 수 있습니까?
- 23. 어떻게 Emacs dired 모드에서 파일을 외부에서 열 수 있습니까?
- 24. Rave Report를 사용하여 DBGrid에서 SelectedRows를 어떻게 인쇄 할 수 있습니까?
- 25. 파이썬에서 얼마나 큰 변수가 될 수 있습니까?
- 26. 위젯 생성자 외부에서 windowFlags를 변경할 수 있습니까?
- 27. 무료 OCaml-C 변환기가 있습니까?
- 28. 지도이지만 키가 값이 될 수있는 데이터 구조를 보면 값은 키가 될 수 있습니다
- 29. 색상으로 인쇄/넣을 수 있습니까?
- 30. 모듈 사용 Ocaml 집합
유형을 분석하기 위해 소스 코드가 필요하지 않습니까? – newacct
@newacct 네, 타입 정보가 필요합니다.이 정보는 컴파일러에 의해 버려집니다 (그러나 최상위 레벨이나 디버거에서 사용 가능합니다). 타사 라이브러리는 제네릭 형식 종속 예쁜 프린터를 작성하는 방식이 아니라 모든 유형에 대해 유형별 예쁜 프린터를 작성하는 간단한 방법을 제공합니다. 제네릭을 허용하는 언어 확장은 있지만 프로덕션 준비 구현 AFAIK는 없습니다. – Gilles
btw 현재, 최소한, @newacct에 언급 된 "Extlib.Std.dump"와 "BatPervasives.dump"는 같은 함수입니다 :'Extlib.Std.dump == BatPervasives.dump ;;'=>'bool = true'. – Mars