TweetFollow Us on Twitter

Lisp Objects
Volume Number:4
Issue Number:4
Column Tag:Learning Lisp

Lisp Objects: Ford vs Chevy

By Didier Guillon, Grenoble, France

Didier Guillon is a former restaurant manager, currently in the fourth year of a Computer Science program at Grenoble University in France. He is a member of AAAI and works in artificial intelligence as a consultant at the Medical University of Grenoble’s department of BioStatistics. He is also president of Mac Alpes, a club of Macintosh developers in Grenoble and has been using the Mac for two years.

Welcome to this new column. When I first started Macintosh programming, MacTutor and the contributing editors were there and helped me since issue number one. Now I think it’s time to share with you the knowledge I gained with the “oldest new language”. So welcome to symbolic computation... you have a problem? No, don’t be frightened, I have been so pleased when I discovered ABC’ s of C that I wanted to introduce you to the Lisp world in a gentle way. The technique I will use may sometimes be criticized by expert Lisp programmers...but do they remember their first steps?

Today I will present the object idea with a very dumb example and “how to” on the Macintosh. MacApp and MPW Pascal are there to let us remember that object programming becomes a reality day after day. But, since Smalltalk, no other language than Common Lisp did it with better efficiency.

My Kingdom for an Object

But what is an object ? To the outside world, an object is an entity. But for us programmers, an object is some private memory with a set of operations. An object can be a number, a square, a text editor. An object which is a square knows a lot of information about itself: how to calculate the area of the square, the center of the square... When we want the object ‘square’ to carry out such a calculation, we send him a message (we say: to invoke). But we just tell him which operation we want, not how to operate. (If he’s smart, he already knows that!)

When a set of objects represents the same kind of information, we implement a class with a data structure and the procedures that operate on this data structure. For example, a class implemented for a rectangle would know how a specific object, called an instance, would carry out the operation rectangular area. This instance has private variables called instance variables and the function that will operate on the instance of a particular class is call a method. We just defined in fact the fundamental concepts of object programming: data abstraction, information hiding (not to tell “how to”) and generic operation. But all this is just theory, so let’s start with our dumb example. We will use the ExperCommonLisp (ECL) from ExperTelligence™, who since the last review of this language in MacTutor, did a lot of improvement and removed many bugs.

First, let’s create a class for ‘cars’ (note: we wrote cars to avoid the “car” word which is a Lisp reserved word).

(defclass (cars object)
  (IVS (color ‘blue)
       (price 0)))

Defclass contains a list with the name of the call and the name of the superclass. In ECL all the classes come from a special class called object. In fact object is a root class from which all classes are derived. The IVS stands for instance variable and as we saw previously, will manage to store the IVS in each instance. You note the quote before blue? In Lisp every elementary object, called an atom, is evaluated. This evaluation returns a function name or the value attached to this specific atom. So, to prevent evaluation, we “quote” the atom which becomes itself a value and is attached to the instance variable color. This ‘quoting’ is not necessary for a numeric value. Then we define the method (using defmethod followed by the name of the class and the name of the method itself):

(defmethod (cars small) ()
 (setq price 800)
 (format T “A small car is just fun for ~a  dollars.~%” price))

This method is doing two things: setting price to 800 with setq, a Lisp word which will not evaluate the following word, price, and sets its value to 800 (for Pascal programmers it’s an assignment). Then it prints a message (good old Fortran world !!!). You are now able to trace by yourself what the second method does:

(defmethod (cars race) ()
 (setq color ‘red)
 (setq price 20000)
 (format T “A wonderful race car whose color is ~a.~%” color))

Now we link up what we define to this first class: we compile and define an instance (we will represent the return value by ->):

(setq my1car (cars ‘new))
-> #<CARS INSTANCE $5402341A>

“my1car” is the instance which holds a copy of the class ‘cars’. Let’s invoke the instance in various ways :

(my1car ‘race)
-> A wonderful race car whose color is RED.

(my1car ‘small)
-> A small car is just fun for 800 dollars.

(my1car ‘price)
-> 800

(my1car ‘price 200)
-> 200

(my1car ‘price)
-> 200

We can see the graphic image of the object we define, including the next subclass we will create:

Here is the subclass Ferrari:

(defclass (Ferrari cars)
 (IVS a_speed))

(defmethod (cars buy_a_Ferrari) ()
 (setq a_speed 200)
 (self ‘race)
 (format T “But when you drive at ~a miles... Whoo !!!!~%”    a_speed 
) )

Same as the ‘cars’ object, but note the “self” word which is used to invoke the method race from the method buy_a_Ferrari. As previously, we can say:

(setq I_buy_a_Ferrari (Ferrari ‘new))
-> #<FERRARI INSTANCE $540233AA>

(I_buy_a_Ferrari ‘buy_a_Ferrari)
-> A wonderful race car whose color is RED.

But when you drive at 200 miles... Whoo !!!!

(I_buy_a_Ferrari ‘price)
-> 20000

(I_buy_a_Ferrari ‘color)
-> RED

We can see easily that I_buy_a_Ferrari inherits from its superclass ‘cars’ all the methods and instance variables. We will not cover here some other concepts like class variables, super....

So now that we have an idea on how objects live, we’ll have a look at ECL. In ECL, the object idea has been expanded to the Macintosh Toolbox.

Before going on to the Macintosh toolbox, we have a look at another object expression, metamethod. A metamethod is a procedure which is invoked by sending an appropriate message to a class. We explain metamethod because on the Macintosh we create a NEW metamethod which sets up the required data structure. When invoking a specific metamethod, the instance of a particular class will have instance variables which will correlate (and with the same name) to the equivalent fields in the Pascal data structure. An example from QuickDraw:

(setq yourRect (Rect ‘new 30 40 250 280))

We just created the instance call ‘yourRect’ with a set of parameters. If we send it a message, we can access these instance accessors by the same name as in the Pascal structure : top, left, bottom, right.

(yourRect ‘bottom)
-> 250

or change their value :

(yourRect ‘left 60)
-> 60

We can also draw, calling Toolbox procedures with the instance ‘yourRect’ :

(!PaintRect yourRect)

Note that trap names are prefixed by an exclamation mark. We are now ready to start programming our first minimum shell in ECL... but that’s for next month.

For those interested in following me, and starting Lisp, I recommend the very nice and easy book of Touretzky “A Gentle Introduction to Symbolic Computation”. For the others, obviously, Lisp 2e by Winston is a must. I intend to present the next coming months various aspects of Lisp programming in Artificial Intelligence, but also use some special languages as OPS 5, SmallTalk, Humble, Prolog (or why not Nexpert, just to let us dream...). If you have any suggestions, please contact me :

Didier Guillon

8 Impasse Saint Jean

38240 Meylan

France.

The complete program :

(defclass (cars object)
 (IVS (color ‘blue)
         (price 0)))

(defmethod (cars small) ()
 (setq price 800)
 (format T “A small car is just fun for ~a  dollars.~%” price))


(defmethod (cars race) ()
 (setq color ‘red)
 (setq price 20000)
 (format T “A wonderful race car whose color  is ~a.~%” color))

;**********Examples*****************

;(setq my1car (cars ‘new))
;#<CARS INSTANCE $5402341A>
;(my1car ‘race)
;A wonderful race car whose color is RED.
;(my1car ‘small)
;A small car is just fun for 800 dollars.
;(my1car ‘price)
;800
;(my1car ‘price 200)
;200
;(my1car ‘price)
;200

;**********Second class**************

(defclass (Ferrari cars)
  (IVS a_speed))

(defmethod (Ferrari buy_a_Ferrari) ()
   (setq a_speed 200)
   (self ‘race)
 (format T “But when you drive at ~a miles ...  Whoo !!!!~%”         
                              a_speed))

;***********Example****************

;(setq I_buy_a_Ferrari (Ferrari ‘new))
;#<FERRARI INSTANCE $540233AA>

;(I_buy_a_Ferrari ‘buy_a_Ferrari)
;A wonderful race car whose color is RED.
;But when you drive at 200 miles... Whoo !!!!

;(I_buy_a_Ferrari ‘price)
;20000

;(I_buy_a_Ferrari ‘color)
;RED
 
AAPL
$519.01
Apple Inc.
+1.05
MSFT
$40.40
Microsoft Corpora
+0.65
GOOG
$556.54
Google Inc.
+20.10

MacTech Search:
Community Search:

Software Updates via MacUpdate

PDFpenPro 6.2 - Advanced PDF toolkit for...
PDFpenPro allows users to edit PDF's easily. Add text, images and signatures. Fill out PDF forms. Merge or split PDF documents. Reorder and delete pages. Even correct text and edit graphics! Create... Read more
PDFpen 6.2 - Edit and annotate PDFs with...
PDFpen allows users to easily edit PDF's. Add text, images and signatures. Fill out PDF forms. Merge or split PDF documents. Reorder and delete pages. Even correct text and edit graphics! Features... Read more
Monolingual 1.5.9 - Remove unwanted OS X...
Monolingual is a program for removing unnecesary language resources from OS X, in order to reclaim several hundred megabytes of disk space. It requires a 64-bit capable Intel-based Mac and at least... Read more
Maya 2015 - Professional 3D modeling and...
Maya is an award-winning software and powerful, integrated 3D modeling, animation, visual effects, and rendering solution. Because Maya is based on an open architecture, all your work can be scripted... Read more
Starcraft II: Wings of Liberty 1.1.1.180...
Download the patch by launching the Starcraft II game and downloading it through the Battle.net connection within the app. Starcraft II: Wings of Liberty is a strategy game played in real-time. You... Read more
Sibelius 7.5.0 - Music notation solution...
Sibelius is the world's best-selling music notation software for Mac. It is as intuitive to use as a pen, yet so powerful that it does most things in less than the blink of an eye. The demo includes... Read more
Typinator 5.9 - Speedy and reliable text...
Typinator turbo-charges your typing productivity. Type a little. Typinator does the rest. We've all faced projects that require repetitive typing tasks. With Typinator, you can store commonly used... Read more
MYStuff Pro 2.0.16 - Create inventories...
MYStuff Pro is the most flexible way to create detail-rich inventories for your home or small business. Add items to MYStuff by dragging and dropping existing information, uploading new images, or... Read more
TurboTax 2013.r17.002 - Manage your 2013...
TurboTax guides you through your tax return step by step, does all the calculations, and checks your return for errors and overlooked deductions. It lets you file your return electronically to get... Read more
TrailRunner 3.8.769 - Route planning for...
Note: While the software is classified as freeware, it is actually donationware. Please consider making a donation to help support development. TrailRunner is the perfect companion for runners,... Read more

Latest Forum Discussions

See All

Unpossible (Games)
Unpossible 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: **Important** Requires at least iPad 2, iPhone 4S, iPod Touch (5th gen), or newer. | Read more »
Hitman GO (Games)
Hitman GO 1.2 Device: iOS Universal Category: Games Price: $4.99, Version: 1.2 (iTunes) Description: Get your daily fix of Agent 47 with this elegant, strategy-based Hitman game! | Read more »
The Seventh Sign: Hodappy Bird Released...
The Seventh Sign: Hodappy Bird Released on the App Store Posted by Jeff Scott on April 16th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Rogue Heroes (Games)
Rogue Heroes 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Rogue Heroes is awesome fast-paced 2D action-platforming roguelike game with RPG elements. - explore the depth of procedurally... | Read more »
Fourcast Review
Fourcast Review By Jennifer Allen on April 16th, 2014 Our Rating: :: VIDEO POTENTIALiPhone App - Designed for the iPhone, compatible with the iPad Fourcast is a great idea for combining video clips, but it does lack a number of... | Read more »
Hearthstone: Heroes of Warcraft is Avail...
Hearthstone: Heroes of Warcraft is Available on the U.S. App Store Right Now – Gogogogo! Posted by Rob Rich on April 16th, 2014 [ permalink ] | Read more »
Grammar Pop HD Review
Grammar Pop HD Review By Jennifer Allen on April 16th, 2014 Our Rating: :: FUN LEARNINGiPad Only App - Designed for the iPad Learning the different parts of speech isn’t always fun, but Grammar Pop HD makes it much more... | Read more »
Groundskeeper2 Review
Groundskeeper2 Review By Nadia Oxford on April 16th, 2014 Our Rating: :: SLICE THOSE ALIEN SLIMEUniversal App - Designed for iPhone and iPad Putting aside some minor control issues, Groundskeeper2 is a fun and furious action/... | Read more »
Pinnacle Studio for iPhone (Photography...
Pinnacle Studio for iPhone 5.0 Device: iOS iPhone Category: Photography Price: $9.99, Version: 5.0 (iTunes) Description: | Read more »
Season 3 of Zombies, Run! Starts Right N...
Season 3 of Zombies, Run! | Read more »

Price Scanner via MacPrices.net

Microsoft Blinks – Drops Microsoft Office 365...
Microsoft has dropped the annual subscription fee for Microsoft Office 365 Personal – which is needed in order to create and edit documents in Microsoft Office for iPad. However, Apple’s iOS and OS X... Read more
New AVG Vault Apps for iOS and Android Help K...
AVG Technologies N.V. an online security company for 177 million active users, has announced the launch of its latest mobile application, AVG Vault. The free app introduces an innovative user... Read more
Free Local Carrot iPhone App Helps Find Fresh...
I love fresh vegetables. I’m not a vegan, although I was for several years in the 1980s, but fresh vegetables and other whole foods are still my dietary mainstays as a matter of taste rather than... Read more
Apple refurbished iPad Airs available startin...
Apple is now offering Certified Refurbished iPad Airs for up to $140 off MSRP. Apple’s one-year warranty is included with each model, and shipping is free. The following Airs are available today: -... Read more
21-inch 2.7GHz iMac on sale for $1179, save $...
B&H Photo has the 21″ 2.7GHz iMac on sale for $1179 including free shipping plus NY sales tax only. Their price is $120 off MSRP. Add an iMac to your shopping cart, and B&H will offer an... Read more
Download our app, iTracx, for iOS and Android
MacPrices is proud to offer readers a free iOS app (iPhones, iPads, & iPod touch) and Android app (Google Play and Amazon App Store) called iTracx, which allows you to glance at today’s lowest... Read more
Education discounts shave up to $300 off the...
Purchase a new Mac at The Apple Store for Education and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free, and all... Read more
Save $50 on Mac mini Server
B&H Photo has the 2012 Mac mini Server on sale for $949 including free shipping plus NY sales tax only. Their price is $50 off MSRP. Read more
PhatWare’s “Ultimate Writing App For iOS” Ren...
PhatWare Corp. has announced it has renamed its new WritePro word processing app for iPhone and iPad: WritePad Pro. The decision to change the app’s name to leverages the strong brand awareness and... Read more
Full Resolution Photo Editor Tint Mint 1.0 Re...
California based independent developer, Jeffrey Sun, creator of the iOS app Modern Editor, has released Tint Mint, a new photography app for editing enthusiasts. The app costs a dollar, and it packs... Read more

Jobs Board

*Apple* Retail - Manager - Holyoke - Apple I...
Job Summary Keeping an Apple Store thriving requires a diverse set of leadership skills, and as a Manager, you’re a master of them all. In the store’s fast-paced, Read more
*Apple* Retail - Manager - Apple (United Sta...
Job SummaryKeeping an Apple Store thriving requires a diverse set of leadership skills, and as a Manager, you're a master of them all. In the store's fast-paced, dynamic Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
*Apple* Retail - Market Leader - Cincinnati...
…challenges of developing individuals, building teams, and affecting growth across Apple Stores. You demonstrate successful leadership ability - focusing on excellence Read more
*Apple* Retail - Manager - SoHo - Apple (Uni...
Job SummaryKeeping an Apple Store thriving requires a diverse set of leadership skills, and as a Manager, you're a master of them all. In the store's fast-paced, dynamic Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.