Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

multiple dispatch

Name: Anonymous 2012-01-21 4:10

Lisp:


[1]> (defclass B () ())
#<STANDARD-CLASS B>
[2]> (defclass C () ())
#<STANDARD-CLASS C>
[3]> (defgeneric f (x y))
#<STANDARD-GENERIC-FUNCTION F>
[4]> (defmethod f ((x B) (y B)) (print "BB"))
#<STANDARD-METHOD (#<STANDARD-CLASS B> #<STANDARD-CLASS B>)>
[5]> (defmethod f ((x B) (y C)) (print "BC"))
#<STANDARD-METHOD (#<STANDARD-CLASS B> #<STANDARD-CLASS C>)>
[6]> (defmethod f ((x C) (y B)) (print "CB"))
#<STANDARD-METHOD (#<STANDARD-CLASS C> #<STANDARD-CLASS B>)>
[7]> (defmethod f ((x C) (y C)) (print "CC"))
#<STANDARD-METHOD (#<STANDARD-CLASS C> #<STANDARD-CLASS C>)>
[8]> (f (make-instance 'B) (make-instance 'B))

"BB"
"BB"
[9]> (f (make-instance 'B) (make-instance 'C))

"BC"
"BC"
[10]> (f (make-instance 'C) (make-instance 'B))

"CB"
"CB"
[11]> (f (make-instance 'C) (make-instance 'C))

"CC"
"CC"
[12]>
Bye.


C++:


#include <iostream>

using namespace std;

struct A;
struct B;
struct C;

struct A {
  virtual ~A() {}

  virtual void f(A* y) = 0;

  virtual void f(B* y) = 0;
  virtual void f(C* y) = 0;

  virtual void g(B* y) = 0;
  virtual void g(C* y) = 0;
};

struct B : public A {
  void f(A* y);

  void f(B* y);
  void f(C* y);

  void g(B* y);
  void g(C* y);
};

struct C : public A {
  void f(A* y);

  void f(B* y);
  void f(C* y);

  void g(B* y);
  void g(C* y);
};

void B::f(A* y) { y->g(this); }

void B::f(B* y) { cout << "BB" << endl; }
void B::f(C* y) { cout << "BC" << endl; }

void B::g(B* y) { y->f(this); }
void B::g(C* y) { y->f(this); }


void C::f(A* y) { y->g(this); }

void C::f(B* y) { cout << "CB" << endl; }
void C::f(C* y) { cout << "CC" << endl; }

void C::g(B* y) { y->f(this); }
void C::g(C* y) { y->f(this); }

int main(int argc, char** argv) {
  A* b = new B();
  A* c = new C();
  b->f(b);
  b->f(c);
  c->f(b);
  c->f(c);
  delete b;
  delete c;
  return 0;


$ g++ gen.cpp
$ a.out
BB
BC
CB
CC

Name: Anonymous 2012-01-21 4:30

>>6

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/o++/+so/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::s:`   `yy:::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/h-`   `sd/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::+yhyy+/:::::::::::+y+::/ydo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::/::/hmhhd+::::::::::://+odmdh/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::/:::://:/ymyyms/:::::::::::://dhyhy::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::://shddyyyyds:::/:::::///:odyyyhs/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::://oydhyyyyyydy:/::::::::://yysysyh+:/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::ymhyyyyyyyyhd+:/:::::::::+dyyssyyy/::/:::::://::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::dmyyyyyyyyyymo:/:::::/:::shsyysyyhsoooooossoooso+:/:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::/sddyyyyyyyyyhms///:::://:/dysyyyhys+-:++::+oo/:://:/:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::oNhyyyyyyyyyyyhhhs/::/:::/shyyyhy/.``-:.``.-.:so://:::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::oNhyyyyyyyyyyyyyydhys/::/+dyyhs:`   ``   :dNs`.yo::/::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::hmyyyyyyyyyyyyyyyyyyhdo//ydho-.://:`    `smMh  -d/::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::/yNyyyyyyyyyyyyyyyyyyyhdosy/.``oyyyy+`   -sdNo ``d+/++osso+/:/://////::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::/dmhyyyyyyyyyyyhhhyyyhdo-`   `+syyy+`   :mNy-+oohyyyyso+shho/::o+/os//:::::::/::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::omhyyyyyyyyyyyo:+dhhs:.   ``.-:/++:`  .:./+-ohyyyyyy+````/hdo:/s.``/y+++/++++++/::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::hmyyyyyyyyho:`` .s/.```-/sydmddhyssso/----..yyyyyyyy:````:ydy:o+s-  oy--------:+o+///:::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::sNhyyyyyyyh-`    ```.+ymmmmmds+/:::/+syy:```odyyyyyys/--/shdo:y/m+  .h+-``     ``-/+o+//:/::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::/ymdhhhhhhd+      -oo++osyhhhhys+/:-:::+yy-`.hdhyyyyyyyyhhho/:y/my`  ohsso++++++++++oshhs:::::::::::
:::::::::::::::::::::::::::::::::::/::::/:::///++osydddmo./h.`    `/yo:::::://+oyyhhys+/::/od/.hsosyhhhhhys+/://y+mh`  :h..h-..-:::::::-.sd:::::::::::
::::::::::::::::::::::::::::::::::::::/://+syyyyyyyyyssym+/s      /dysssoo+/:--::/osyyhhyo//+dhs/::://////:::://yomd.  .d. y. :s:--:::+s sh:::::::::::
:::::::::::::::::::::::::::::::::::///+syhyysyssyyyyssyh+-/o     .dmdhyyyyys+.-:--::/+syyhhy+oo:/:-..-:::::/:::+ssNd-  `d: y. +o.`-+--.. sh:::::::::::
:::::::::::::::::::::::::::::/::::/osyhyyyysyyyyyyyysyyd+-:s     /Nmmmyyhhysssos+/:-:::/ooshhho/::-..:::::::/::oosmd-   h+ y- `://:`     yh:::::::::::
::::::::::::::::::::::::::::::://syhyysyyyyyyyyyyyyssyyhms-h     ohdmh///oyhysyysso/:--:--oyyyhhs/::/:-::/::/::soymd-   yo y-            yh:::::::::::
:::::::::::::::::::::::::::::/+yhyysysyyyyyyyyyyyyyyyyyd:``y.    ++.+y+/::/+hdyyysyys/:--::/syyyhdo/::-:::::/::soymm-   ys y-            yy::/::::::::
::::::::::::::::::::::::::::+yhyyyyyyyssyyyyyyyyyyyyyyshdy.-y`   -y.+/:oo//:/+hdyssyyso:----:+yyyydh+/::::::/::s+ymm-   ys y-            hy:::::::::::
::::::::::::::::::::::::://shysyysssyyyyyyyyyyyyysyyyyysd+` o+    +h- ``-yo/://smhyyssss+::--:/syyyhdo/:::::/::s+ymm-   ys s:           `hs:::::::::::
::::::::::::::::::::::::/+hhssyyyyyyyyyyyyyyyyyyysyyyysyhhyy.o/    :s/``/:.+s+/:+mdyysssso:----:oyyyydy///:/:::soymm-   yo s:           `hs:::::::::::
::::::::::::::::::::/:::odyysyyyyyyyyyyyyyyyyyyyyyyyyssysyds``+o`   `:oys.`/ho/::/mdyso:oso-:--::oyyyyhh/:::/:/ooymm-   h+ s:           `hs:::::::::::
:::::::::::::::::::::/:sdyyysyyyyyyyyyyyyyyysyyysyyysssyyyds+os:o:``   `-/oyysyyys+mmysyys/.`-:--:++syydh//:/::osymd-   d/ o/           `ds:::::::::::
:::::::::::::::::::::/odyyyysyyyyyyyyyyyyyyyyyyyysyyyysssyyyhmy``:o/`       `.+ho/:+mdyssyo:/-:--:-+yyyydh:::/:+ssmd.  `d- o/           `ds:::::::::::
::::::::::::::::::::/+dysssyyyyyyyyyyyyyyyyyyssydyyyyssyssyysdy+sd:-++/.  `-oyo/:/::oNdysysyy+::-:-/syyyyms::::+yomd.  :h` o/           `do:::::::::::
::::::::::::::::::::/hhyyyyyyyyyyyyssyyyyyyyyysyydhsssyyyyyysyyhhm-`-:.:++hy+//:::/::hNyyyyyys/-:--:+yyyyhm+:/:/yomh` `so  o+           .do://::::::::
::::::::::::::::::::omyyyyyyyyyyyyysyyyyyyyyssssyyhdyssyyyyyysyyyhhhdm:`//hs:::-``-::+mdyysyyso:-::-..+syymy::/:h+my` .h.  ++           .do:::::::::::
::::::::::::::::::::hdysyyyyyyyyyyysyyhsyyyysyysysyydhyyssyyyyyysyyyyhdhmhy/:::::-:://yNyysyo/o/-:--..oyyydm+:/:y+mo `oh-` ++           .do:::::::::::
:::::::::::::::://+odhysyyyyyyyyyyysyyhyyyyyysyyyysyyhdhysyyyyyyyysssyydh/::::://////+oNdyyssss+:----/yyyyhNy++/ssy: :mNdh+so `       ``-d+:::::::::::
:::::::::::::/oshhhhmysysyyyyyyyyyyysshhysyyyyyyyysyyyyhhhyyysssyyyyyyymhooosssoooooooodmysyysys:--::/syyyyNd++++s-`:ydhhmmmmhhhhhhyyyyyhh+::/::::::::
:::::::::::/ohdhyyyhdyyssyssyyyyysyysyydyssyyyyyyyyyyyssyyhhhyyyyyyssshmmmmm+.`:oyhhhddmmhhhhhhho++++oyhhhhmmdhhyyso/````.:+shmmmh+///////::::::::::::
::::::::::/ydhyyyyddmyyyyyysyyyyyyyyssydhsysyssyyyyyyyyyyyyyyyhhhhhyyydmmmmmh. ```...---:::::::/:::::::::::---...```      `:oyhyo/::::::::::::::::::::
:::::::::/ydhyyyhdo-hhsyyyyyyyyyyyyyyssydyyyssyyyyyyyyyyysyyyyyyyyyyyhdmmmmmms`    `+yys:`                              `:yhs+//::::::::::::::::::::::
:::::::::ymyyyyymo`.ddyyyyyyyyyyyyyyyysshdyyssyyyyyyyyyyyysssssyyyyyyyyyhdmmmmy`  `so-./do                          `` .sdo/::::::::::::::::::::::::::
::::::::odhyyyyym/ :ddhyyyyyyyyyyyyyyyyyyhhyyyyyyyyyyyyyyyyyyyyyyssssyssyyhmNmNy+++s`   sh                         ./.-yh+::://:::::::::::::::::::::::
:::::::/hdyyyyyydh-+hydysyssyyyyyyyyyyyyyyhhyyyssyyyyyyyyyyyyyyyyyyyssysyhysdms:.```   :h:                       .//..hh//::::::::::::::::::::::::::::
:::::::+mdyyyyyyyhhdhsyhhysyyyyyyyyyyyyyssyhdysysyyyyyyyyyyyyyyyyyyyysyyho`:s-`        -s:                    .://.``od+::::::::::::::::::::::::::::::
:::://:smhyyyyyyyyydhssyyyyyyyyyyyyyyyyyyyyyydhyssyyyyyyyyyyyyyyyyyysyyyh..y.     ``    -s:::-.         ``.-://-`   .ms:/:::::::::::::::::::::::::::::
:::::::ymyyyyyyyhhdmhsssyyyyssyyyyyyyyyyyyyyyyhhysyysyyyyyyyyyyyyyyysyyhy`:h     /hy`    ````-+/`  :+++++/:-.`      +m///:::::::::::::::::::::::::::::
::::::/ymhyyyyyyyhydhsssyyyysyyyyyyyyyyyyyyyyssyhhyyyssyysyyyyyyyyyysyyyd-.h.   `+mh.   `     .h`  o+.``           `yh/:::::::::::::::::::::::::::::::
:::::::smhyyyyyyyo:/dyyysyyyyyyyyyyyyyyyysssyyyyyyhhyyyyyysyyyyyyyyysssyddsdh.`   .`   .so:--:os`  o/              `yy//::::::::::::::::::::::::::::::
:::::::+mdyyyyyyy+..hhyyyyyyyyyyyyyyyyyyyyyyyyyyyysyyhhhyysyssssyyyyyyyhhmdhhho`  ``   `/s+:::-`   s:              `yy//::::::::::::::::::::::::::::::
::::::::ymhyyyyyyyo/odyyysyyyyyyyyyyyyyyysssyyyyssssssyyhdddhhhhhhhhdddhs+///sy`  /y`    `y:       s:              `sh/:::::::::::::::::::::::::::::::
::::::/:/ymhyyyyyyyyyhdhyyyyssyyyyyyyyyysyyyyyyyyyyhhdddmdysossyyssoo+//::/::y+  `oN+`    oo      `+-               +d/:::::::::::::::::::::::::::::::
:::::/:::/sddhyyyyyyyyhdhyyysyyyyysyyyyyydmmmmmmmmmmmmmmy/::::::::::::::::::/sd+/sdymo-`.:m+------------------/sss:-/mo/:/::::::::::::::::::::::::::::
:::::::::::+sdddhhyyyyyydddhyyyyyyyyyhddmmmmmmmmmmmmmdy+/::::::::::::::::::::/ohysoyy+ossso:------------------/ooo:-:+yho/::::::::::::::::::::::::::::
:::::::::::://+syhhdddhhdddddddddddddhso+ydmmmmmmmdyo//:/::::::::::::::::://::::/oh:```````````````````````````````````/dy/:::::::::::::::::::::::::::
:::::::::::::::/::://////////+ooo++//:::::/+ooo++/:::::::::::::::::::::::::://::+hyssssssssssssssssssssssssssssssssssssoyds:/:/:::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::/:::::::::::::::::::::::::::::::::::://////////////////////////////////////////:/:::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List