Re: Newbie-type question: structured data types in Mathematica?
- To: mathgroup at smc.vnet.net
- Subject: [mg37585] Re: Newbie-type question: structured data types in Mathematica?
- From: Erich Mueller <emueller at mps.ohio-state.edu>
- Date: Tue, 5 Nov 2002 05:04:00 -0500 (EST)
- Organization: Ohio State University
- References: <aq2l8n$g10$1@smc.vnet.net> <aq58jg$s7b$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
A third option, with advantages and disadvantages, is to use a list of
Rules for your structured data type, such as
structureddata[type->circle, position->{1,2}, radius->{3}]
I'll spare you the exercise of giving creation and reading rules.
Erich
On Mon, 4 Nov 2002, Tom Burton wrote:
> On 11/3/02 12:03 AM, in article aq2l8n$g10$1 at smc.vnet.net, "David Park"
> <djmp at earthlink.net> wrote:
>
> > CircleType = {{_, _}, _};
> > ConstructCircle[position : {_, _}, radius_] := {position, radius}
> > GetRadius[circle : CircleType] := Part[circle, 2]
> > GetPosition[circle : CircleType] := Part[circle, 1]
> > Attributes[SetRadius] = {HoldFirst};
> > SetRadius[circle_][radius_] := (circle = ReplacePart[circle, radius, 2];)
>
> It's easy to type a little stronger:
>
> circleType = circle[{_, _}, _];
> constructCircle[position : {_, _}, radius_] := circle[position, radius];
> positionGet[circle : circleType] := Part[circle, 1];
> radiusGet[circle:circleType] := Part[circle, 2];
> positionSet[circle_][
> position:{_,_}] := (circle = ReplacePart[circle, position, 1])
> radiusSet[circle_][radius_] := (circle = ReplacePart[circle, radius, 2]);
> (Attributes[#] = {HoldFirst})&/@{positionSet,radiusSet};
>
> I avoid capitalizing circle to prevent shadowing (clashing names with)
> context System`.
>
> Tom Burton
>
>