IsotopeData[0] Does Not Give { neutron }.

IsotopeData is very useful for building a table of nuclides.

However, it is very inconvenient for including the neutron.

For example, IsotopeData[1] gives a list of 7 entities including the proton, deuterium, tritium, etc. to 7H. IsotopeData[2] gives a list of 2He to 10He, and so on for similar isotopes. However, IsotopeData[0] does not give a list of entities (that is 1 member long): { neutron }.

This is not because IsotopeData doesn’t know about the neutron. Observe that IsotopeData[{0,1}] evaluates to Entity["Isotope", "Neutron"], which can be probed in all of the usual ways.

The only way I have been able to get around this is by coding a lot of special-case handling for the neutron. For example:

IsotopeData[0]
During evaluation of In[123]:= IsotopeData::notent: 0 is not a known entity, class, or tag for IsotopeData. Use IsotopeData[] for a list of entities. 
(* Evaluates to IsotopeData[0], compare with *)
IsotopeData[1]
(* which gives a nice list of hydrogen isotopes. *)    
IsotopeData[{0,1}] (* gives the desired entity. *)

(* No neutron: *)
nuclides = Flatten[Table[{z, a}, {z, 1, maxZ}, {a, IsotopeData[#, "MassNumber"] & /@ IsotopeData[z]}], 1];
(* With neutron: *)
nuclidesN = Flatten[Table[{z, a}, {z, 0, maxZ}, {a, IsotopeData[#, "MassNumber"] & /@ If[z == 0, {IsotopeData[{0, 1}]}, IsotopeData[z]]}], 1];

My question is: is this an oversight, or intentional? It seems that if Mma knows that 0! = 1, it should also know that IsotopeData[0] = { neutron } : ). [Also, there’s a chance that the tetraneutron is bound (though the evidence hasn’t been independently reproduced).]

Otherwise: is there a more elegant way to go about including the neutron?

It will be much easier to handle this by defining your own isotopeData function. Something along the lines of

isotopeData[0] = {Entity["Isotope", "Neutron"]}
isotopeData[x___] := IsotopeData[x]

plus any other cases that you might need for the neutron.

This is easier than having many Ifs.

That’s absolutely true, of course. But it seems like this functionality should be native.

It is probably worth noting that the form

IsotopeData[_Integer]

is not a documented form (http://reference.wolfram.com/language/ref/IsotopeData.html) and that the defined and thus supported form is

IsotopeData[{Z,A}]

But I agree that if IsotopeData1 yields the isotopes of Hydrogen then IsotopeData[0] should perhaps yield “neutronium”, though sticklers for nomenclature may argue that an element should only be one with possible electrons in its configuration.

It is a documented form. Under “details” on the documentation you linked the third bullet is:

IsotopeData[“name”] or IsotopeData[Z] gives a list of all known isotopes of the element with the specified name or atomic number.

… and I guess I should concede that atomic-physicist sticklers might question the neutron’s place in IsotopeData, but nuclear-physicist sticklers (myself included) know it’s place on the chart of the nuclides.

Oops, you’re right. I stand corrected–actually I am sitting, but I am corrected nonetheless.