O que há de errado com o meu código no sml?

Não sei por que meu código não funciona.

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

Foi o que aconteceu quando o testei no 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