Я работаю над назначением переводчика в OCaml, в котором мне нужно связать значения.Например, мне может потребоваться привязать значение «A» к значению 3.
Я пытаюсь использовать модуль хэш-таблицы в ocaml для достижения удобства хранения и поиска, но, похоже, возникли многочисленные проблемы, связанные св область видимости и возвращают типы.
Что я хочу сделать, это когда случай, когда второе значение, извлеченное из стека, имеет тип имени, я хочу связать NAME с любым первым извлеченным значением и затем добавитьUNIT в стек.К сожалению, по некоторым причинам мое решение не работает.Кто-нибудь может мне помочь?
open Hashtbl;;
let bound_values = Hashtbl.create 123456
type stackVal =
INT of int
| STR of string
| BOOL of bool
| NAME of string
| UNIT of unit
| ERROR
let callBind (stk : stackVal list) : stackVal list =
match (stk) with
x::NAME(y)::stk -> UNIT(Hashtbl.add bound_values y x)::stk
| _ -> ERROR::stk