# A Data and Program Fragments

The following appendix features some program fragments and data specifications omitted in the chapters' text.

## A.1 Getting Started

<Change capitalization>=
  `fun {$ I}
  case {Char.type I}
  of lower then {Char.toUpper I}
  [] upper then {Char.toLower I}
  else I
  end
  end`

## A.2 More on Widgets

<Color names>=
  `[aliceblue antiquewhite aquamarine
  azure beige bisque
  black blanchedalmond blue
  blueviolet brown burlywood
  cadetblue chartreuse chocolate
  coral cornflowerblue cornsilk
  cyan darkblue darkcyan
  darkgoldenrod darkgray darkgreen
  darkgrey darkkhaki darkmagenta
  darkolivegreen darkorange darkorchid
  darkred darksalmon darkseagreen
  darkslateblue darkslategray darkslategrey
  darkturquoise darkviolet deeppink
  deepskyblue dimgray dimgrey
  dodgerblue firebrick floralwhite
  forestgreen gainsboro ghostwhite
  gold goldenrod gray
  green greenyellow grey
  honeydew hotpink indianred
  ivory khaki lavender
  lavenderblush lawngreen lemonchiffon
  lightblue lightcoral lightcyan
  lightgoldenrod lightgoldenrodyellow lightgray
  lightgreen lightgrey lightpink
  lightsalmon lightseagreen lightskyblue
  lightslateblue lightslategray lightslategrey
  lightsteelblue lightyellow limegreen
  linen magenta maroon
  mediumaquamarine mediumblue mediumorchid
  mediumpurple mediumseagreen mediumslateblue
  mediumspringgreen mediumturquoise mediumvioletred
  midnightblue mintcream mistyrose
  moccasin navajowhite navy
  navyblue oldlace olivedrab
  orange orangered orchid
  palegoldenrod palegreen paleturquoise
  palevioletred papayawhip peachpuff
  peru pink plum
  powderblue purple red
  rosybrown royalblue saddlebrown
  salmon sandybrown seagreen
  seashell sienna skyblue
  slateblue slategray slategrey
  snow springgreen steelblue
  tan thistle tomato
  turquoise violet violetred
  wheat white whitesmoke
  yellow yellowgreen]`

## A.3 Text Widgets

<Sample ToyText>=
  `hyper(canvas:
  e(head:'Canvas'
  body:['A canvas widget displays items. '
  'An item is of one the following types: '
  a(ref:arc ['arc']) ', '
  a(ref:bitmap ['bitmap']) ', '
  a(ref:image ['image']) ', '
  a(ref:line ['line']) ', '
  a(ref:oval ['oval']) ', '
  a(ref:polygon ['polygon']) ', '
  a(ref:rectangle ['rectangle']) ', '
  a(ref:text ['text']) ', and '
  a(ref:window ['window']) '.'])
  arc:
  e(head:'Arc'
  body:['An arc item displays a piece of a '
  'circle.'])
  bitmap:
  e(head:'Bitmap'
  body:['A bitmap item displays a bitmap '
  'with a given name.'])
  image:
  e(head:'Image'
  body:['Displays an image.'])
  line:
  e(head:'Line'
  body:['A line item consists of several '
  'connected segments.'])
  oval:
  e(head:'Oval'
  body:['An oval can either be a circle or '
  'an ellipsis.'])
  polygon:
  e(head:'Polygon'
  body:['A polygon is described by three or '
  'more ' a(ref:line ['line'])
  ' segments.'])
  rectangle:
  e(head:'Rectangle'
  body:['Displays a rectangle.'])
  text:
  e(head:'Text'
  body:['Displays text consisting of a single '
  'or several lines.'])
  window:
  e(head:'Window'
  body:['Displays a widget in the canvas where '
  'the canvas widget serves as geometry '
  'manager for the widget. '
  'See also '
  a(ref:canvas ['the canvas widget']) '.']))`