merits of Lisp vs Python

greg greg at cosc.canterbury.ac.nz
Wed Dec 13 22:16:36 EST 2006


Ken Tilton wrote:

> pps. How would Python do this?

Here's one way it could look:

   defskill("absolute-value",
     title = "Absolute Value",
     annotations = [
      "Take the absolute value of #op#.",
      "The vertical bars around #op# mean 'the absolute value of' #op#.",
      "Absolute value of #strn# is the 'distance' of #strn# from zero.",
      "Absolute value is always zero or positive: #str|n|=n#, and #str|-n|=n#."
     ],
     hints = [
      "What do those vertical bars around #op# mean?",
      "Have you learned about 'absolute value'?",
      """Absolute value can be thought of as the 'distance' of a value from
         zero on the number line, and distance is always positive.""",
      "The rule is:#str|-n|=|n|##str=n#.  Can you apply that to #op#?",
      "Some examples: #str|+42|=42#, #str|-42|=42#, and #str|0|=0#.",
      """To get the absolute value of a number such as #op#, we simply drop
         any minus sign."""
     ]
   )

 > Is it possible to avoid committing to an
 > implementation mechanism?

The defskill function could do just about anything with this.
Here's one possibility:

   skills = {}

   class Skill:
     pass # fill in whatever methods you need here

   def defskill(name, title, annotations, hints):
     skill = Skill()
     skill.title = title
     skill.annotations = annotations
     skill.hints = hints
     skills[name] = skill

This gives you a dictionary of Skill instances indexed by name,
each one having a title and lists of annotation and hint strings.
The rest of the system can process this however required.

--
Greg



More information about the Python-list mailing list