Code and Data in C#

Don Box's Spoutlet

Syndication

I've noticed that at least one really smart guy doesn't get how LINQ works despite my bestattempts to explain
 
Let me try again a bit more slowly this time, dissecting a simple program that elaborates on the code==data theme in both Scheme and C# 3.0.
 
// Line 1: (define f (lambda (a) (+ a 1)))
Func<int, int> f = a => a + 1;
 
// Line 2: (define e (quote (lambda (a) (+ a 1))))
Expression<Func<int, int>> e = a => a + 1;
 
// Line 3: (define elong (list 'lambda (list 'a ) (list '+ 'a 1 )))
ParameterExpression ap = Expression.Parameter(typeof(int), "a");
 
Expression<Func<int, int>> elong =
    Expression.Lambda<Func<int, int>>(
      Expression.Add(ap, Expression.Constant(1)),
      ap);
 
// Line 4: (display (car (car (cddr e)))) ; prints +
Console.WriteLine(e.Body.NodeType); // prints Add
 
// Line 5:(display (elong 4)) ; runtime error: procedure application: expected procedure, given: (lambda (a) (+ a 1))
Console.WriteLine(elong(4)); // compile-time error CS0118: 'elong' is a 'variable' but is used like a 'method'
 
// Line 6: (define f2 (eval elong (scheme-report-environment 5)))
Func<int, int> f2 = elong.Compile();
 
// Line 7: (display (f2 4)) ; prints 5
Console.WriteLine(f2(4)); // prints 5
 
The first two lines are the most important.
 
In both Lisp/Scheme and C# 3.0, there's a "quoting" mechanism that tells the front end to leave your expression as data and not turn it into some opaque yet directly executable function.
 
In Lisp/Scheme, you use the quote special form to turn off the evaluator. The quote special form is often abbreviated with an apostrophe like in my previous post).
 
In C#, the compiler looks at the context in which a lambda expression is being used. If it's being assigned to a delegate type (like Func), then the compiler emits an opaque IL-based method just like it did in C# 2.0.  If it's being assigned to an Expression where TSignature is a delegate type, then it produces an expression tree that is equivalent to the one I later construct by hand and assign to the variable elong (see Line 3).  For completeness, I show how to use Scheme's list function to do the equivalent list construction in a more verbose manner (I decided folks would freak out if I did it all with cons).
 
Note that in Line 4 of our program, we can use the standard mechanisms for traversing structured data to extract any part of the expression. In the Scheme version, I'm using the list destructuring operators car and cddr. In the C# version, I'm using the named property mechanism (LINQ expressions are structured as types with named properties rather than as raw lists).  In both the C# and Scheme versions the values of e and elong are equivalent to one another.
 
Line 5 is the one that trips up a lot of people coming to Lisp or Scheme (or LINQ).
 
When you quote an expression, you wind up with plain old data that you can slice and dice to your heart's content. What you can't do with data is directly execute it.  For that reason, Line 5 is an error that is at compile-time in C# and at runtime in Scheme.
 
To translate the data into something you can execute, both Lisp/Scheme and C# require you to take an explicit step (shown in Line 6). In Scheme, it's the evaluation of the lambda special form that translates the rest of the list into something executable (a procedure object in R5RS-speak). In LINQ, it's calling the Compile() method on the lambda expression.  Both of these operations yield an opaque value that is ready for beta reduction/direct execution.  Armed with this opaque executable value, we're off to the races in Line 7 printing out our beloved "5"
 
Both Patrick and James Robertson allude to the fact that we're marching headlong into the past with this stuff.
 
If only I could wish away a lot of the stuff that distracted/stunted the industry back in the late 80's and 1990's, but I can't.
 
All I can say is that both I and my friend the token Smalltalk weenie anxiously await the past and are doing what we can to get us there :-)

Posted May 12 2006, 05:52 AM by don-box

Comments

Sch wrote re: Code and Data in C#
on 05-12-2006 5:52 AM
I am confused. I am not an expert in LISP and Smalltalk but those have lambda (in specialized form for ST) and I do not see how this Expression object trick is a lambda.

For me, It seems more something more like macro in LISP (but without the simplicity and, then, power).
Matt Warren wrote re: Code and Data in C#
on 05-12-2006 7:05 AM
I cdr had a car, but they don't let ex cons drive.
Kurtiss Hare wrote re: Code and Data in C#
on 05-12-2006 7:15 AM
The difference between code-as-data in C# and lisp is that the representation of C#'s data is bound by it's adherence to a valid syntax tree, that is your data must always be unevaluated (uncompiled, in this case) code. (Is this true?) In lisp, your data is bound by the limitations of arbitrary trees. Some of the nodes in that tree might be purely aesthetic, or their arrangement might be customized to fit a domain-specific view of the data--because those trees can be manipulated as data (and not code). It's far more likely, then, for lisp's code-as-data mechanisms to bubble up to the surface levels of an application, because the programmer there is dealing with pure data, in the form of arbitrary trees. Let's be honest, to the programmer, line 1 is code. It's only data to the compiler and the layer of the application that has to call .Compile() to get it to run.

Aside, I certainly appreciate the strides being made to get these notions out to a mainstream crowd.
Steven wrote re: Code and Data in C#
on 05-12-2006 7:20 AM
"are doing what we can to get us there"

That's the thing--we HAVE been there, and the languages that do the things you are trying to do don't have to resort to ugly syntactic monsterisms in order to accomplish them.

This is NIH at its worst.
mike wrote re: Code and Data in C#
on 05-12-2006 8:12 AM
and people thought that c was complicated, sometimes I wonder if the benefits of these sort of things are not opaque by the time of learn them
Kurtiss Hare wrote re: Code and Data in C#
on 05-12-2006 8:44 AM
[edit]: 3rd to last sentence should read "line 2 is code," not "line 1 is code". :)
Stefan Tilkov's Random Stuff wrote Code and Data in C# and Scheme
on 05-12-2006 8:44 AM
Great post by Don Box &#8212; if C#&#8217;s syntax were a little less ugly, this would actually be very elegant....
Jason Haley wrote Interesting Finds
on 05-12-2006 11:48 AM
Michael wrote re: Code and Data in C#
on 05-12-2006 6:47 PM
This could be really cool, but some of the real power of this type of coding is using it to create DSLs. So is C# 3.0 going to have a macro like facility to do this?
John wrote re: Code and Data in C#
on 05-14-2006 8:52 AM
FWIW, here's an implementation in JScript (for WSH 5.6).

var fa = function( a ) { return a + 1; }
var fb = new Function( "a", "return a + 1" );

var e = "new Function( 'a', 'return a + 1;' )";
var f2 = eval( e );

print( fa( 4 ) );
print( fb( 4 ) );
print( f2( 4 ) );



Baczek wrote re: Code and Data in C#
on 05-14-2006 12:09 PM
That JScript soooo misses the point...
Don Box's Spoutlet wrote Eval !=
on 05-14-2006 1:55 PM
Jafar wrote re: Code and Data in C#
on 08-07-2006 6:48 AM
Very nice. How do you define a recursive function as an Expression? This would be a very powerful technique, especially if the compiler recognized tail recursion.
Lisper wrote re: Code and Data in C#
on 11-26-2006 10:30 PM
<CODE C#>
Func<int, int> f = a => a + 1;
ParameterExpression ap = Expression.Parameter(typeof(int), "a");

Expression<Func<int, int>> elong =
Expression.Lambda<Func<int, int>>(
Expression.Add(ap, Expression.Constant(1)),
ap);

Func<int, int> f2 = elong.Compile();
Console.WriteLine(f2(4));
</CODE>

<CODE Common Lisp>
(print
(funcall (compile nil
'(lambda (a) (1+ a)))
4))
</CODE>

Recursive lambda (Common Lisp):

;; Define macro to hide details
(defmacro lambda-rec ((&rest args) &body)
`(lambda (,@args)
(labels ((this (,@args)
,@body))
(this ,@args))))

;; Example of recursive lambda definition
(lambda-rec (n sum)
(if (> n 0) (this (1- n) (+ n sum)) n)

;; Macro build code:
=> (lambda (n sum)
(labels ((this (n sum)
(if (> n 0)
(this (1- n) (+ n sum))
sum)))
(this n sum))

;; Assign compiled function to variable
(setf compiled-fn
(compile nil
(lambda-rec (n sum)
(if (> n 0)
(this (1- n) (+ n sum))
sum))))

;; Apply function to arguments
(funcall compiled-fn 5 0)

=> 15
TiagoAz wrote re: Code and Data in C#
on 04-15-2007 6:47 PM
<CODE C# 3.0>
Func<int, int> f = a => a + 1;
Console.WriteLine(f(4));
</CODE>

=> 5
Mike Taulty's Blog wrote System.Linq.Expressions
on 04-24-2007 5:30 AM
One of the parts of the "story" that I attempted to tell here&nbsp;that underpins the flexibility we...
WhyDoesElispSuck | Common Lisp WebDev Insider wrote WhyDoesElispSuck | Common Lisp WebDev Insider
on 05-02-2010 6:14 AM

Pingback from  WhyDoesElispSuck | Common Lisp WebDev Insider

635csi Sale Abs Bmw 325i, 635csi Luxury L6 wrote 635csi Sale Abs Bmw 325i, 635csi Luxury L6
on 05-20-2010 12:45 PM

Pingback from  635csi Sale Abs Bmw 325i, 635csi Luxury L6

Reatta Baseboard Electric, Reatta Owners Club wrote Reatta Baseboard Electric, Reatta Owners Club
on 05-20-2010 4:32 PM

Pingback from  Reatta Baseboard Electric, Reatta Owners Club

Precis Free Dictionary, Part Brake Proportioning Valve Gmc C35 C3500 Pickup Dana 60 Front Axle wrote Precis Free Dictionary, Part Brake Proportioning Valve Gmc C35 C3500 Pickup Dana 60 Front Axle
on 05-20-2010 11:33 PM

Pingback from  Precis Free Dictionary, Part Brake Proportioning Valve Gmc C35 C3500 Pickup Dana 60 Front Axle

Volkswagen Eurovan T5 Styling, Vw Eurovan T4 Radiator wrote Volkswagen Eurovan T5 Styling, Vw Eurovan T4 Radiator
on 05-21-2010 4:06 AM

Pingback from  Volkswagen Eurovan T5 Styling, Vw Eurovan T4 Radiator

2007 Kia Sedona Ex Lx, Sedona Used Trucks wrote 2007 Kia Sedona Ex Lx, Sedona Used Trucks
on 05-21-2010 6:05 AM

Pingback from  2007 Kia Sedona Ex Lx, Sedona Used Trucks

S90 Pot Substitute, S90 Aftermarket Club wrote S90 Pot Substitute, S90 Aftermarket Club
on 05-21-2010 2:49 PM

Pingback from  S90 Pot Substitute, S90 Aftermarket Club

Quantum Of Solace Meaning Bbc, Quantum Mechanical Number Wave Function wrote Quantum Of Solace Meaning Bbc, Quantum Mechanical Number Wave Function
on 05-21-2010 3:14 PM

Pingback from  Quantum Of Solace Meaning Bbc, Quantum Mechanical Number Wave Function

Tcx905 Call Waiting Caller Id, Lx90 Parts wrote Tcx905 Call Waiting Caller Id, Lx90 Parts
on 05-21-2010 7:47 PM

Pingback from  Tcx905 Call Waiting Caller Id, Lx90 Parts

C5 C1500 Area Used 1999 Chevrolet Suburban, K15 C1500 Pickup Coolant Core Size wrote C5 C1500 Area Used 1999 Chevrolet Suburban, K15 C1500 Pickup Coolant Core Size
on 05-21-2010 7:51 PM

Pingback from  C5 C1500 Area Used 1999 Chevrolet Suburban, K15 C1500 Pickup Coolant Core Size

C280 Headlight Discounts Aftermarket, Cheap Cars For Sale Mercedes Benz C280 wrote C280 Headlight Discounts Aftermarket, Cheap Cars For Sale Mercedes Benz C280
on 05-21-2010 10:19 PM

Pingback from  C280 Headlight Discounts Aftermarket, Cheap Cars For Sale Mercedes Benz C280

2006 Kia Sedona Forum, Sedona Buy Used Motors wrote 2006 Kia Sedona Forum, Sedona Buy Used Motors
on 05-21-2010 11:56 PM

Pingback from  2006 Kia Sedona Forum, Sedona Buy Used Motors

Nissan Pathfinder Fog Lights Exhaust Manifold, Pathfinder Windshield Replacement Nissan Altima wrote Nissan Pathfinder Fog Lights Exhaust Manifold, Pathfinder Windshield Replacement Nissan Altima
on 05-22-2010 2:35 AM

Pingback from  Nissan Pathfinder Fog Lights Exhaust Manifold, Pathfinder Windshield Replacement Nissan Altima

1998 Oldsmobile Bravada Used Parts, Used Oldsmobile Bravada Sell Automotive wrote 1998 Oldsmobile Bravada Used Parts, Used Oldsmobile Bravada Sell Automotive
on 05-22-2010 5:12 AM

Pingback from  1998 Oldsmobile Bravada Used Parts, Used Oldsmobile Bravada Sell Automotive

Bobcat Grading Bucket, 2007 Bobcat T300 For Sale wrote Bobcat Grading Bucket, 2007 Bobcat T300 For Sale
on 05-22-2010 12:05 PM

Pingback from  Bobcat Grading Bucket, 2007 Bobcat T300 For Sale

Mr2 Fuel Pump Up, Toyota Mr2 Anzo Headlight Front Bumper wrote Mr2 Fuel Pump Up, Toyota Mr2 Anzo Headlight Front Bumper
on 05-22-2010 4:38 PM

Pingback from  Mr2 Fuel Pump Up, Toyota Mr2 Anzo Headlight Front Bumper

Used Parts 560sec 300sl Mercedes Benz 300td, 300td Bulb Mercedes Benz 190e wrote Used Parts 560sec 300sl Mercedes Benz 300td, 300td Bulb Mercedes Benz 190e
on 05-22-2010 7:29 PM

Pingback from  Used Parts 560sec 300sl Mercedes Benz 300td, 300td Bulb Mercedes Benz 190e

Steel R6221t Roadmaster Little Red Wagon, Roadmaster Treadmill Diagram Elliptical Trainers - 186.1fh.org wrote Steel R6221t Roadmaster Little Red Wagon, Roadmaster Treadmill Diagram Elliptical Trainers - 186.1fh.org
on 05-24-2010 4:13 AM

Pingback from  Steel R6221t Roadmaster Little Red Wagon, Roadmaster Treadmill Diagram Elliptical Trainers - 186.1fh.org

Colony Park Aftermarket Best, Monterey Headlight Colony Park Mercury Cougar - 209.jeepsunlimted.com wrote Colony Park Aftermarket Best, Monterey Headlight Colony Park Mercury Cougar - 209.jeepsunlimted.com
on 05-24-2010 4:27 AM

Pingback from  Colony Park Aftermarket Best, Monterey Headlight Colony Park Mercury Cougar - 209.jeepsunlimted.com

T929 Sale Usb Data Cable Headset Adapter, 929 Specs Part Mazda Rx 8 - 181.dlmreza.net wrote T929 Sale Usb Data Cable Headset Adapter, 929 Specs Part Mazda Rx 8 - 181.dlmreza.net
on 05-24-2010 4:35 AM

Pingback from  T929 Sale Usb Data Cable Headset Adapter, 929 Specs Part Mazda Rx 8 - 181.dlmreza.net

Compass Used Magnetic North Angle Between, Bulkhead Compass Marine - 340.defutbolazo.com wrote Compass Used Magnetic North Angle Between, Bulkhead Compass Marine - 340.defutbolazo.com
on 05-24-2010 4:39 AM

Pingback from  Compass Used Magnetic North Angle Between, Bulkhead Compass Marine - 340.defutbolazo.com

Pontiac Grand Safari Sale Get, Safari Conversion Cargo Van - 489.jordanbrandallamerican.com wrote Pontiac Grand Safari Sale Get, Safari Conversion Cargo Van - 489.jordanbrandallamerican.com
on 05-24-2010 4:51 AM

Pingback from  Pontiac Grand Safari Sale Get, Safari Conversion Cargo Van - 489.jordanbrandallamerican.com

R2500 Dualwatch Ic Pcr2500, Parts Dodge R2500 Suburban - 96.rkwrh.com wrote R2500 Dualwatch Ic Pcr2500, Parts Dodge R2500 Suburban - 96.rkwrh.com
on 05-24-2010 5:02 AM

Pingback from  R2500 Dualwatch Ic Pcr2500, Parts Dodge R2500 Suburban - 96.rkwrh.com

J20 Used List Dealers, J20 Factory Valve Cover Gasket Tie Rod - 367.rkwrh.com wrote J20 Used List Dealers, J20 Factory Valve Cover Gasket Tie Rod - 367.rkwrh.com
on 05-24-2010 5:34 AM

Pingback from  J20 Used List Dealers, J20 Factory Valve Cover Gasket Tie Rod - 367.rkwrh.com

Te100 P1p Network Print, Lowes Uc100e1006 - 20.codebluehacks.org wrote Te100 P1p Network Print, Lowes Uc100e1006 - 20.codebluehacks.org
on 05-24-2010 9:13 AM

Pingback from  Te100 P1p Network Print, Lowes Uc100e1006 - 20.codebluehacks.org

Infiniti Qx56 Discount Air Intake Aem Brute Force, Toyota Qx56 Articles Related - 206.cmanager.org wrote Infiniti Qx56 Discount Air Intake Aem Brute Force, Toyota Qx56 Articles Related - 206.cmanager.org
on 05-24-2010 10:04 AM

Pingback from  Infiniti Qx56 Discount Air Intake Aem Brute Force, Toyota Qx56 Articles Related - 206.cmanager.org

K10 Suburban Radiator Fender Flares Ignition Wire Set, 1985 Bmw K100 Repair Manual - 283.jeepsunlimted.com wrote K10 Suburban Radiator Fender Flares Ignition Wire Set, 1985 Bmw K100 Repair Manual - 283.jeepsunlimted.com
on 05-24-2010 10:32 AM

Pingback from  K10 Suburban Radiator Fender Flares Ignition Wire Set, 1985 Bmw K100 Repair Manual - 283.jeepsunlimted.com

Ml63 Amg Diagram Used Mercedes Benz Ml350, Ml350 Aftermarket Replacement Headlight Assembly - 287.akemet.com wrote Ml63 Amg Diagram Used Mercedes Benz Ml350, Ml350 Aftermarket Replacement Headlight Assembly - 287.akemet.com
on 05-24-2010 11:05 AM

Pingback from  Ml63 Amg Diagram Used Mercedes Benz Ml350, Ml350 Aftermarket Replacement Headlight Assembly - 287.akemet.com

K35 C3500 Pickup Part Discount, C3500 Ford Truck - 421.binggreen.com wrote K35 C3500 Pickup Part Discount, C3500 Ford Truck - 421.binggreen.com
on 05-24-2010 12:44 PM

Pingback from  K35 C3500 Pickup Part Discount, C3500 Ford Truck - 421.binggreen.com

Mercedes Benz C240 Car Parts Cls55 Amg, Cls55 Adoption Like - 121.1fh.org wrote Mercedes Benz C240 Car Parts Cls55 Amg, Cls55 Adoption Like - 121.1fh.org
on 05-24-2010 1:29 PM

Pingback from  Mercedes Benz C240 Car Parts Cls55 Amg, Cls55 Adoption Like - 121.1fh.org

Alternative Mitsubishi Cordia, Cordia Boiler Dissuade - 280.dlmreza.net wrote Alternative Mitsubishi Cordia, Cordia Boiler Dissuade - 280.dlmreza.net
on 05-24-2010 1:41 PM

Pingback from  Alternative Mitsubishi Cordia, Cordia Boiler Dissuade - 280.dlmreza.net

525xi Case, 525xi Leter - 215.defutbolazo.com wrote 525xi Case, 525xi Leter - 215.defutbolazo.com
on 05-24-2010 1:42 PM

Pingback from  525xi Case, 525xi Leter - 215.defutbolazo.com

Sealife Dc100 Wide Angle Lens, Ford 100 Econoline Bulb Crown Victoria E 550 - 76.1fh.org wrote Sealife Dc100 Wide Angle Lens, Ford 100 Econoline Bulb Crown Victoria E 550 - 76.1fh.org
on 05-24-2010 3:15 PM

Pingback from  Sealife Dc100 Wide Angle Lens, Ford 100 Econoline Bulb Crown Victoria E 550 - 76.1fh.org

Fairmont Radiator Country Squire Ford Freestar, Freestar Auto - 319.defutbolazo.com wrote Fairmont Radiator Country Squire Ford Freestar, Freestar Auto - 319.defutbolazo.com
on 05-24-2010 6:21 PM

Pingback from  Fairmont Radiator Country Squire Ford Freestar, Freestar Auto - 319.defutbolazo.com

S210 Replacement Designed Punch Down Tool, Great Escape Theaters 42101 - 52.codebluehacks.org wrote S210 Replacement Designed Punch Down Tool, Great Escape Theaters 42101 - 52.codebluehacks.org
on 05-24-2010 7:26 PM

Pingback from  S210 Replacement Designed Punch Down Tool, Great Escape Theaters 42101 - 52.codebluehacks.org

Dodge D400 Assembly, D400 Performance D View Notebook Stand - 494.myipgirl.com wrote Dodge D400 Assembly, D400 Performance D View Notebook Stand - 494.myipgirl.com
on 05-24-2010 7:34 PM

Pingback from  Dodge D400 Assembly, D400 Performance D View Notebook Stand - 494.myipgirl.com

Trooper Furnace, Tube Iron Maiden The Trooper - 128.binggreen.com wrote Trooper Furnace, Tube Iron Maiden The Trooper - 128.binggreen.com
on 05-25-2010 12:39 AM

Pingback from  Trooper Furnace, Tube Iron Maiden The Trooper - 128.binggreen.com

Calais Removal Discount Migrants, Calais Coupon Neufchatel Hardelot Hesdin L Abb? - 494.defutbolazo.com wrote Calais Removal Discount Migrants, Calais Coupon Neufchatel Hardelot Hesdin L Abb? - 494.defutbolazo.com
on 05-25-2010 1:13 AM

Pingback from  Calais Removal Discount Migrants, Calais Coupon Neufchatel Hardelot Hesdin L Abb? - 494.defutbolazo.com

Used 2000 Kia Sephia Recalls Crash Test Ratings, Sephia Commercial Used Kia - 37.renters.ws wrote Used 2000 Kia Sephia Recalls Crash Test Ratings, Sephia Commercial Used Kia - 37.renters.ws
on 05-25-2010 1:45 AM

Pingback from  Used 2000 Kia Sephia Recalls Crash Test Ratings, Sephia Commercial Used Kia - 37.renters.ws

Mercedes Benz Clk550 Part Cl63 Cls63 Amg, S420 Promotion Clk55 Amg - 398.renters.ws wrote Mercedes Benz Clk550 Part Cl63 Cls63 Amg, S420 Promotion Clk55 Amg - 398.renters.ws
on 05-25-2010 5:26 AM

Pingback from  Mercedes Benz Clk550 Part Cl63 Cls63 Amg, S420 Promotion Clk55 Amg - 398.renters.ws

T1000 Picture Xander Berkeley, Discount Headlight Switch Pontiac T1000 Assembly - 143.zapstreaming.com wrote T1000 Picture Xander Berkeley, Discount Headlight Switch Pontiac T1000 Assembly - 143.zapstreaming.com
on 05-25-2010 5:26 AM

Pingback from  T1000 Picture Xander Berkeley, Discount Headlight Switch Pontiac T1000 Assembly - 143.zapstreaming.com

L300 1 Car Trailer, L300 2 Adoption Classifieds - 37.cmanager.org wrote L300 1 Car Trailer, L300 2 Adoption Classifieds - 37.cmanager.org
on 05-25-2010 12:09 PM

Pingback from  L300 1 Car Trailer, L300 2 Adoption Classifieds - 37.cmanager.org

1998 Yukon Sale, Yukon Part Invasive Two Fish - 339.zapstreaming.com wrote 1998 Yukon Sale, Yukon Part Invasive Two Fish - 339.zapstreaming.com
on 05-25-2010 12:25 PM

Pingback from  1998 Yukon Sale, Yukon Part Invasive Two Fish - 339.zapstreaming.com

Apollo Empoli Designer Radiator, Apollo Blub - 282.unlockiphone30.net wrote Apollo Empoli Designer Radiator, Apollo Blub - 282.unlockiphone30.net
on 05-25-2010 12:41 PM

Pingback from  Apollo Empoli Designer Radiator, Apollo Blub - 282.unlockiphone30.net

Firebird Part Ebay, Trans Sport Engine Harmonic Balancer Pontiac Firebird - 35.computeronlinebingo.com wrote Firebird Part Ebay, Trans Sport Engine Harmonic Balancer Pontiac Firebird - 35.computeronlinebingo.com
on 05-25-2010 1:35 PM

Pingback from  Firebird Part Ebay, Trans Sport Engine Harmonic Balancer Pontiac Firebird - 35.computeronlinebingo.com

1972 190d, 190d Wholesale Auto Parts - 190.eumreborn.com wrote 1972 190d, 190d Wholesale Auto Parts - 190.eumreborn.com
on 05-25-2010 2:10 PM

Pingback from  1972 190d, 190d Wholesale Auto Parts - 190.eumreborn.com

Slx Replacement Auto Parts Warehouse Acura Tsx, Tsx Furniture - 80.tijuanareader.com wrote Slx Replacement Auto Parts Warehouse Acura Tsx, Tsx Furniture - 80.tijuanareader.com
on 05-25-2010 4:01 PM

Pingback from  Slx Replacement Auto Parts Warehouse Acura Tsx, Tsx Furniture - 80.tijuanareader.com

E430 E55 Amg E300d Mercedes, E 200 Part Razor E300 - 207.myipgirl.com wrote E430 E55 Amg E300d Mercedes, E 200 Part Razor E300 - 207.myipgirl.com
on 05-25-2010 6:32 PM

Pingback from  E430 E55 Amg E300d Mercedes, E 200 Part Razor E300 - 207.myipgirl.com

Nikon Coolpix S550 Digitale Camera, Garmin C550 Nuvi 350 - 404.an74.com wrote Nikon Coolpix S550 Digitale Camera, Garmin C550 Nuvi 350 - 404.an74.com
on 05-25-2010 7:17 PM

Pingback from  Nikon Coolpix S550 Digitale Camera, Garmin C550 Nuvi 350 - 404.an74.com

Econoline E 350 Standard, Bravada Ptt Standard - 190.animejin.com wrote Econoline E 350 Standard, Bravada Ptt Standard - 190.animejin.com
on 05-25-2010 7:47 PM

Pingback from  Econoline E 350 Standard, Bravada Ptt Standard - 190.animejin.com

Silhouette Low Danby Dehumidifiers, Buy 2001 Oldsmobile Silhouette Inch - 453.codebluehacks.org wrote Silhouette Low Danby Dehumidifiers, Buy 2001 Oldsmobile Silhouette Inch - 453.codebluehacks.org
on 05-25-2010 7:50 PM

Pingback from  Silhouette Low Danby Dehumidifiers, Buy 2001 Oldsmobile Silhouette Inch - 453.codebluehacks.org

Used J20 Car Dealer Jeep Comanche, Sale J20 Comanche Jeep J10 - 21.tgrconversions.com wrote Used J20 Car Dealer Jeep Comanche, Sale J20 Comanche Jeep J10 - 21.tgrconversions.com
on 05-25-2010 8:18 PM

Pingback from  Used J20 Car Dealer Jeep Comanche, Sale J20 Comanche Jeep J10 - 21.tgrconversions.com

2000 - 1991 @ Mesh Grille Dodge Dakota, 1997 Dodge Dakota Forum - 404.eumreborn.com wrote 2000 - 1991 @ Mesh Grille Dodge Dakota, 1997 Dodge Dakota Forum - 404.eumreborn.com
on 05-27-2010 2:59 AM

Pingback from  2000 - 1991 @ Mesh Grille Dodge Dakota, 1997 Dodge Dakota Forum - 404.eumreborn.com

1989 - 2000 @ Rabid Mountain Lion, Nimbus Auction Info - 273.animejin.com wrote 1989 - 2000 @ Rabid Mountain Lion, Nimbus Auction Info - 273.animejin.com
on 05-27-2010 3:05 AM

Pingback from  1989 - 2000 @ Rabid Mountain Lion, Nimbus Auction Info - 273.animejin.com

1989 - 2000 @ K24 K2500 Pickup Replacement 1972 Gmc, Gmc K25 K2500 Pickup Discount Truck Parts Air Conditioner Compressor - 164.mfbattle.com wrote 1989 - 2000 @ K24 K2500 Pickup Replacement 1972 Gmc, Gmc K25 K2500 Pickup Discount Truck Parts Air Conditioner Compressor - 164.mfbattle.com
on 05-27-2010 9:38 AM

Pingback from  1989 - 2000 @ K24 K2500 Pickup Replacement 1972 Gmc, Gmc K25 K2500 Pickup Discount Truck Parts Air Conditioner Compressor - 164.mfbattle.com

1995 - 2003 @ Estate Auto Group Inc, Bozeman Montana Real Estate Realty - 460.akemet.com wrote 1995 - 2003 @ Estate Auto Group Inc, Bozeman Montana Real Estate Realty - 460.akemet.com
on 05-30-2010 11:43 PM

Pingback from  1995 - 2003 @ Estate Auto Group Inc, Bozeman Montana Real Estate Realty - 460.akemet.com

1986 - 1982 @ R1500 Blub Front Bumper, R1500 Model Mileage - 140.renters.ws wrote 1986 - 1982 @ R1500 Blub Front Bumper, R1500 Model Mileage - 140.renters.ws
on 05-31-2010 12:27 AM

Pingback from  1986 - 1982 @ R1500 Blub Front Bumper, R1500 Model Mileage - 140.renters.ws

1996 - 1986 @ Patagonia Freightliner Stores Gear Bag, Freightliner Sprinter Van For Sale Powered - 188.jeepsunlimted.com wrote 1996 - 1986 @ Patagonia Freightliner Stores Gear Bag, Freightliner Sprinter Van For Sale Powered - 188.jeepsunlimted.com
on 05-31-2010 12:33 PM

Pingback from  1996 - 1986 @ Patagonia Freightliner Stores Gear Bag, Freightliner Sprinter Van For Sale Powered - 188.jeepsunlimted.com

1996 - 1986 @ Act Up Substitute Grand Voyager, High Quality Chrysler Voyager Radiator Pt Cruiser - 7.binggreen.com wrote 1996 - 1986 @ Act Up Substitute Grand Voyager, High Quality Chrysler Voyager Radiator Pt Cruiser - 7.binggreen.com
on 05-31-2010 1:25 PM

Pingback from  1996 - 1986 @ Act Up Substitute Grand Voyager, High Quality Chrysler Voyager Radiator Pt Cruiser - 7.binggreen.com

1987 - 1991 @ 10 Omnitrix Hertals, Omni Based - 114.cmanager.org wrote 1987 - 1991 @ 10 Omnitrix Hertals, Omni Based - 114.cmanager.org
on 05-31-2010 2:51 PM

Pingback from  1987 - 1991 @ 10 Omnitrix Hertals, Omni Based - 114.cmanager.org

1995 - 2003 @ Honda Crx Prelude Opinie, Prelude Model Front Wheel Drive - 46.mfbattle.com wrote 1995 - 2003 @ Honda Crx Prelude Opinie, Prelude Model Front Wheel Drive - 46.mfbattle.com
on 05-31-2010 3:11 PM

Pingback from  1995 - 2003 @ Honda Crx Prelude Opinie, Prelude Model Front Wheel Drive - 46.mfbattle.com

Add a Comment

(required)  
(optional)
(required)  
Remember Me?