2012-06-14 5 views
0

Я хочу установить тип списка как int, но я не знаю, как это сделать. я могу сделать следующее:Установить тип списка OCaml

let listOfInts = []; 

Но это только делает listOfInts быть список с любым типом позволило положить в него. Как я могу заставить listOfInts быть только списком ints?

Это для создания словаря в OCaml, который отображает строку (ключ) в int (значение). Для простоты я просто хочу, чтобы значение было длиной строки. Может ли кто-нибудь помочь мне с этим? Заранее спасибо.

ответ

6

Заявить тип явно.

let (listOfInts : int list) = []; 
4

Там нет смысла в форсировании типа через аннотацию здесь: вы можете использовать [] при любом типе, но, как только вы его использовать, чтобы создать список элементов определенного типа, он будет экземпляр для правильный тип.

Использование аннотаций иногда полезно для типов значений с изменчивым состоянием, которые не являются полностью выведенными или обобщенными (например, ref []).

Я не вижу, как это относится к вам более широкому вопросу о наличии карты между строками и ints, поскольку это вообще не включает списки. Если вы хотите изменить карту, вы можете использовать Hasthbl, в противном случае Map.

module StringMap = Map.Make(String) 
let m = StringMap.add "foo" 3 StringMap.empty 

(m имеет тип int StringMap.t)