2014-04-25 2 views
1

Ocaml 인터프리터는 모든 종류의 값을 표시 (인쇄) 할 수 있습니다. 예를 들어 함수가 배열을 반환하면 배열을 인쇄 할 수 있습니다. 또한 사용자 정의 유형에서도 작동합니다. 예를 들어 다음과 같은 경우 :인터프리터의 인쇄 기능을 사용합니까?

유형 dummy = DUMMY of int * string ;; x = DUMMY (1, "s") ;;

그런 다음 x ;; 화면이에 지문 :

- : 더미 = DUMMY (1, "S")

내 질문은, 어떻게이 기능을 액세스 할 수 있습니까? 예를 들어, 일부 코드를 디버깅하고 비표준 객체 (예 : int, string 등)를 인쇄하려면 인터프리터가 사용하는 함수를 사용하여 별도의 객체를 만들지 않고도 어떻게 수행 할 수 있습니까? 모든 것을위한 인쇄 기능?

+1

간단히 말해서, 당신은 할 수 없습니다. 그리고 [caml-list] (http://caml.inria.fr/pub/ml-archives/caml-list/) ([here] (https://sympa.inria.fr/sympa/arc/도 참조하십시오) caml-list) ...) 더 좋은 장소입니다. (그 질문은 몇 년 전에 몇 번이나 물어 보았습니다.) –

+0

@BasileStarynkevitch : 왜 stackoverflow가이 질문에 적합하지 않습니까? – bienvenu

+0

(나의 이전의 코멘트는 정직한 질문이었습니다. 나는 당신이 틀렸다는 것을 말하려고하지 않았습니다.) – bienvenu

답변

3

OCaml은 유형이 많은 언어이지만 독립 실행 형 프로그램의 런타임에 생성자 이름과 같은 형식 정보를 버립니다. 따라서 이러한 유형 정보가 필요한 일반 값 프린터를 사용할 수 없습니다.

인터프리터라고하는 OCaml toplevel 또는 REPL은 예외입니다. 메모리에 유형을 유지합니다.

값을 조금 더 쉽게 인쇄하려면 "파생"과 같은 CamlP4 확장을 사용하여 값을 자동으로 생성 할 수 있습니다. 그러나 하나의 일반 프린터를 제공하지는 않지만 각 유형별로 프린터를 자동으로 제공합니다. dummy list의 인쇄 값은 여전히 ​​print_list print_dummy과 같이 작성해야합니다.

관련 문제