Previous Up Next

8.20  Extended indexing operators

(Introduced in 4.06)

dot-ext::=  
  (!∣ $∣ %∣ &∣ *∣ +∣ -∣ /∣ :∣ =∣ >∣ ?∣ @∣ ^∣ |∣ ~) { operator-char }  
 
expr::= ...  
  expr .  [module-path .]  dot-ext  ( ( expr ) ∣  [ expr ] ∣  { expr } )  [ <- expr ]  
 
operator-name::= ...  
  . dot-ext  (() ∣  [] ∣  {}) [<-]  
 

This extension provides syntactic sugar for getting and setting elements for user-defined indexed types. For instance, we can define python-like dictionaries with

module Dict = struct include Hashtbl let ( .%{} ) tabl index = find tabl index let ( .%{}<- ) tabl index value = add tabl index value end let dict = let dict = Dict.create 10 in let () = dict.Dict.%{"one"} <- 1; let open Dict in dict.%{"two"} <- 2 in dict
dict.Dict.%{"one"};;
- : int = 1
let open Dict in dict.%{"two"};;
- : int = 2

Previous Up Next