Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OCaml pattern matching on builtin types

I'm trying to write a polymorphic function, which needs to do something slightly different depending on the type of the parameter. Is there any way that I can do a pattern match on the type of the object, using the builtin types? I'm thinking of something along these lines:

let to_string v =
    match v with
    | string -> v
    | int -> string_of_int v
    | _ -> ""

but this doesn't seem to be a valid OCaml program.

I have seen this question, but that doesn't quite answer my question either. I would prefer to use the standard,builtin types rather than constructing new types for this (although I can do that if that is the only way).

like image 573
a_m0d Avatar asked Oct 14 '22 02:10

a_m0d


1 Answers

Actually that answer completely applies to you. You can only match one type class, and the type defined by the union of int, string, float, ... does not exist, and needs to be created (as in the previous answer). 'a operates on a particular type, but does not represent a union of all types.

You might be able to do what you want using an external C function (18.3), although, glancing at the atomic tags section, I'm not sure you'll be able to differentiate char and int.

like image 113
nlucaroni Avatar answered Oct 20 '22 16:10

nlucaroni