What is Expressiveness in a Computer Language

Chris F Clark cfc at shell01.TheWorld.com
Tue Jun 27 06:43:47 CEST 2006


"Greg Buchholz" <sleepingsquirrel at yahoo.com> writes:

> Chris F Clark wrote:
> > Thus, as we traverse a list, the first element might be an integer,
> > the second a floating point value, the third a sub-list, the fourth
> > and fifth, two more integers, and so on.  If you look statically at
> > the head of the list, we have a very wide union of types going by.
> > However, perhaps there is a mapping going on that can be discerned.
> > For example, perhaps the list has 3 distinct types of elements
> > (integers, floating points, and sub-lists) and it circles through the
> > types in the order, first having one of each type, then two of each
> > type, then four of each type, then eight, and so on.
> 
>   Sounds like an interesting problem.  Although not the exact type
> specified above, here's something pretty similar that I could think of
> implementing in Haskell.  (I don't know what a "sub-list" is, for
> example).  Maybe some Haskell wizard could get rid of the tuples?
> 
> 
> data Clark a b c = Nil | Cons a (Clark b c (a,a)) deriving Show
> 
> clark = (Cons 42 (Cons 3.14 (Cons "abc"
>         (Cons (1,2) (Cons (1.2,3.4) (Cons ("foo","bar")
>         (Cons ((9,8),(7,6)) (Cons ((0.1,0.2),(0.3,0.4)) Nil))))))))
> 
> main = print clark

Very impressive.  It looks right to me and simple enough to
understand.  I must find the time to learn a modern FP language.  Can
you write a fold for this that prints the data as a binary tree of
triples?  I have to believe it isn't that hard....

-Chris
        



More information about the Python-list mailing list