In http://www.dalnefre.com/wp/2011/11/fexpr-the-ultimate-lambda
Dale Schumacher writes:

"
One way to look at the difference between functional and object-oriented
algorithms is to consider the relationship between types and operations.
Let’s say I have a small set of types {A, B, C} and operations {f, g, h,
+}.



      f
      g
      h
      +
      A
f(x:A) → A
g(x:A) → B
h(x:A, y:C) →
B
x:A + y:A → A
      B
f(x:B) → B
g(x:B) → C
h(x:B, y:C) →
A
x:B + y:B → B
      C
f(x:C) → C
g(x:C) → A
n/a
x:C + y:C → C

Table 1 shows how these operations might be modeled with functions. The
same function name refers to different operations based on the argument
type(s). Operations are grouped by function name, as shown by the
columns of the table."



Consider the table above. You can "walk the type circle" from A->A
by the calls: g(A)->B, g(B)->C, g(C)->A, or equivalently, 
g(g(g(A)))->A.

Now consider making the same table for Clojure types and functions.
"A" might be a list, "B" might be a hash-map, etc. The "f" function
might be conj. 

Given such a clojure table, the question is: Can we complete the
circle for each data type? Are we missing any functions? Is our
set of chosen functions "orthogonal"? Given the set of types and
a list of functions could we construct the table automatically?

Tim Daly
 



-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to