Por que um método anônimo não pode ser atribuído a var?

Eu tenho o seguinte código: Func<string, bool> comparer = delegate(string value) { return value != "0"; }; No entanto, o seguinte não é compilado: var comparer = delegate(string value) { return value != "0"; }; Por que o compilador não pode descobrir que é um Func<string, bool>?...