0

OcamlでNFAを実装していますが、コンパイラがこの行でエラーを出します

module Nfa : NFA =
struct

type transition = int * char option * int
type nfa = int * int list * transition list

let make_nfa s fs ts = nfa (s, fs, ts);;

エラーは、コンパイラが言う最後の行にありますError: Unbound value nfa

何が問題なのかわかりません…ありがとうございます

4

4 に答える 4

3

あなたはどこにもvaluenfaを宣言していません。あなたはtypenfaを宣言しただけです。

のように

type nfa_type = int * int list * transitian list
let nfa = ( 1, [ 1; 2; 3 ], [x;y] )

編集:私がjavascriptモードでタイプミスをお詫びします

于 2012-04-20T06:39:08.703 に答える
3

transitionおよびnfaはタプル型のシノニムであり、型コンストラクターではありません。make_nfaあなたがタイプになりたいと仮定するとint -> int list -> transition list -> nfa、それは単純になります

let make_nfa s fs ts = (s, fs, ts)
于 2012-04-20T06:42:32.783 に答える
2

nfaコンストラクタとして使用しようとしています。しかし、あなたの型nfaはコンストラクタを定義していません。タプル型のシノニムです。したがって、型の値は のようになります(3, [4], [])

于 2012-04-20T06:43:43.930 に答える
0

他の人が言及しているように、nfaはタプル型の同義語(typedefのような)ですint * int list * transition list

代数的データ型のコンストラクターのように使用したいようです。あなたがそれをしたいなら、あなたはこのようなことをするでしょう:

type nfa = Nfa of int * int list * transition list

let make_nfa s fs ts = Nfa (s, fs, ts)

しかし、この場合、コンストラクターが1つある代数的データ型は一種の無駄です。

于 2012-04-20T19:22:51.157 に答える