Newer
Older
inria-internship / examples / example6.ml
[@@@warning "-20"]
external observe : 'a -> 'b = "observe"

let mm = function
  | [(1, 2), 2]::[] -> observe ([(1, 2), 2]::[])
  | [(1, 2), 2]::_ -> observe [(1, 2), 2]
  | [(1, 2), x]::_ -> observe [(1, 2), x]
  | [x]::[] -> observe [x]
  | [x]::[y]::[] -> observe [x, y]
  | [x, y]::z -> observe [(x, y), z]
  | x -> observe x