Re: Function argument types

*To*: mathgroup at smc.vnet.net*Subject*: [mg112952] Re: Function argument types*From*: Albert Retey <awnl at gmx-topmail.de>*Date*: Thu, 7 Oct 2010 03:37:47 -0400 (EDT)*References*: <i8h7o3$ci1$1@smc.vnet.net>

Am 06.10.2010 09:16, schrieb Sam Takoy: > Hi, > > I can't see to find the answer to this basic question: > > What's the difference between > > f[n_?Integer]:= this pattern matches if Integer[n] evaluates to True (not something very likely to happen and most probably not what you wanted...). A more useful construct would be f[n_?IntegerQ] := ... > and > > f[n_Integer]:= This matches, if n has Head Integer, which is true for all integer values. In this case n_Integer and n_?IntegerQ are almost the same, but there could be some special cases where one could match and the other not, but these are not what you usually expect anyway, e.g. MatchQ[Integer[a], n_Integer] -> True MatchQ[Integer[a], n_?Integer] -> False > I would be happy to read more about this, but what's the keyword? Pattern matching in general, PatternTest in particular... hth, albert