私の前の質問の詳細を参照してください
1) cpf0.ml:
type string = char list
type name = string
type symbol =
| Symbol_name of name
2) problem.ml:
type symbol =
| Ident of Cpf0.string
これproblem.ml
には type の2つの定義がstring
あり、確かにエラーが発生していますが、それらを同じ型にすることはできますか? アイデアが必要です。
module Str = struct type t = string end;;
module StrOrd = Ord.Make (Str);;
module StrSet = Set.Make (StrOrd);;
module StrMap = Map.Make (StrOrd);;
module SymbSet = Set.Make (SymbOrd);;
let rec ident_of_symbol = function
| Ident s -> s
let idents_of_symbols s =
SymbSet.fold (fun f s -> StrSet.add (ident_of_symbol f) s) s StrSet.empty;;
この式のタイプは Cpf0.string = char list ですが、式はタイプ Util.StrSet.elt = string であることが予期されていました