21

バージョン 4 の Ocaml を使用しています。インタラクティブに型を定義すると、インタプリタはその直後に型の文字列表現を出力します。

# type foo = Yes | No;;         <-- This is what I entered
type foo = Yes | No             <-- This is what interpreter bounced

しかし、さらに定義を入力した後、型のテキスト表現をもう一度見たいと思うことがあります。

Haskell では、「:t foo」と入力できました。

Ocamlでこれを行うにはどうすればよいですか?

4

2 に答える 2

15

#typeofutop では、次のディレクティブを使用できます。

#typeof "list";;
type 'a list = [] | :: of 'a * 'a list 

値と型を二重引用符で囲むことができます。

let t = [`Hello, `World];;
#typeof "t";;
val t : ([> `Hello ] * [> `World ]) list   

PSさらに良い解決策は、マーリンを使用することです。

于 2014-05-05T13:24:41.847 に答える
2

私の知る限り、実際には Ocaml で文字列形式の型情報を取得する方法はありません。

タイプごとにパターンマッチングを構築する必要があります

type foo = Yes | No;;

let getType = function
  |Yes -> "Yes"
  |No -> "No"    
  ;;

let a = Yes;;
print_string (getType a);;
于 2013-01-15T13:07:54.087 に答える