¿Qué tiene de malo mi código en sml?

No sé por qué mi código no funciona.

fun lookup _ [] = 0
  | lookup key ((k,v)::entries) =
    if k = key
    then v
    else (lookup key entries)

Eso es lo que sucedió cuando lo probé en cmd.

val lookup = fn : ''a -> (''a * int) list -> int
- lookup (1,[(1,2),(2,3)]);
val it = fn : ((int * (int * int) list) * int) list -> int

Respuestas a la pregunta(1)

Su respuesta a la pregunta