Что означает символ ! в SML имеется в виду?

Что означает символ ! в SML?

fun polysort(_,[]) = []
| polysort(_,[x]) = [x]!
| polysort(less,xs) =
 let
  val (ys, zs) = split xs
   in
   merge(less,polysort(less,ys), polysort(less, zs))
 end;

Это наоборот или что? Я думаю, что это как-то связано с ref, но я этого тоже не понимаю.


person user3216616    schedule 19.03.2014    source источник
comment
Оператор префикса !, по-видимому, является оператором почтения (получает значение из ref), но я не знаю о постфиксе !. (Только из быстрого поиска Google)   -  person clcto    schedule 20.03.2014


Ответы (1)


Обычно ! представляет собой функцию 'a ref -> 'a, которая извлекает значение из эталонной ячейки. . То есть:

val x  = ref 1;  (* create reference cell *)
val () = x := 2; (* update value in x *)
val y = ! x;      (* extract value from x *)

Однако в данном случае это выглядит просто как опечатка.

person Sebastian Paaske Tørholm    schedule 19.03.2014