Thx for explanations!
Personally I was very impressed with this example of scala's
typesystem:
http://jim-mcbeath.blogspot.com/2009/09/type-safe-builder-in-scala-part-4.html
its a little bit more practical (IMO) :)
regards andreas

On Sep 6, 12:39 pm, Kevin Wright <[email protected]> wrote:
> HList is just an abstract type, you can't directly instantiate it, so I
> believe has kind *
>
> There are also two subclasses:
> HNil, which is a singleton and has kind *
> HCons, which takes an existing HList and an additional type, so has the kind
> * -> * -> *
>
> I'm not 100% certain here, so someone may have to correct me :)
>
> On 4 September 2010 13:09, Andreas S. <[email protected]> wrote:
>
>
>
> > Hi Kevin!
> > If List conforms to :* -> *
> > then what would be the term for a HOList(High wizardry in the Land of
> > Scala)?
>
> > regards Andreas
>
> > On Sep 3, 12:56 am, Kevin Wright <[email protected]> wrote:
> > > If a thing can be done, then it WILL be done, there's always going to be
> > > somebody out there perverse enough to try it
> > > Almost any tool is open to abuse.  The more flexible it is, the more
> > > abusable it becomes:
>
> > >http://thereifixedit.failblog.org/
>
> > > C++ templates for example, while a long time favourite of obfuscation
> > > contests, have also resulted in some amazing work:
> >http://www.boost.org/doc/libs/
>
> > > You'll not be surprised to hear that Scala's type system is no different
> > in
> > > this regard.
>
> > > Broadly speaking, there are two important concepts really being explored
> > by
> > > more experienced Scala users; Google on either of these terms with scala,
> > > and you'll come up with a wealth of links:
>
> > > "type classes" :http://en.wikipedia.org/wiki/Type_class
> > > <http://en.wikipedia.org/wiki/Type_class>and "kinds" :
> >http://en.wikipedia.org/wiki/Kind_(type_theory)
>
> > > One example of a type class is scala.Numeric, which allows you to define
> > an
> > > algorithm in such a way that it'll operate over ANY type capable of a few
> > > simple operations (plus, minus, divide, etc.) and do so in a completely
> > > type-safe manner, without need of duck typing, etc.
>
> > > This is an EXTREMELY powerful abstraction, once you consider that
> > concepts
> > > such as matrices, complex numbers, waveforms, linear equations, etc. can
> > all
> > > be added/subtracted/whatever and so can be considered Numeric.
>
> > > Kinds are one level of abstraction up from types.  For example, List can
> > be
> > > seen as a Kind * -> * i.e. it takes a type (e.g. Int) and yields a type
> > > (e.g. List[Int]).  Map is * -> * -> * (takes two types, and yields one).
> >  In
> > > terminology, you'll often see List described as a type constructor,
> > whereas
> > > List[Int] is a Type.  List is absolutely not a raw type, Scala doesn't
> > have
> > > such things!
>
> > > Scala allows you to generically define an algorithm so that it'll operate
> > > over a particular Kind (not just a specific type).
> > > scalaz, for example, defines a number of operations that can operate over
> > > anything of kind * -> *
> >http://scalaz.googlecode.com/svn/continuous/latest/browse.sxr/scalaz/...
> > > (disclaimer: This is bleeding edge, brain melting, academic stuff of the
> > > sort that scares people off, it is absolutely NOT day-to-day Scala so
> > please
> > > don't let it put you off!  It does however show how far things can be
> > pushed
> > > if you are so minded, not unlike C++ templates then)
>
> > > And a few more interesting links, hopefully a lot more approachable than
> > > scalaz :)
>
> > > Quick interview with Bill Venners and Martin Odersky:
> >http://www.artima.com/scalazine/articles/scalas_type_system.html
>
> > > Collection of articles on metaprogramming with types:
> >http://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-s...
>
> > > presentation on type classes:
> >http://lampwww.epfl.ch/~odersky/talks/wg2.8-boston06.pdf
>
> > > Generics of a Higher Kind:
> >http://people.cs.kuleuven.be/~adriaan.moors/files/genericshk/tcpoly.pdf
>
> > > video and slides on "High wizardry in the Land of Scala", covering type
> > > classes and Kinds::http://vimeo.com/13518456
>
> > > SO question illustrating a practical application of the Numeric type
> > class:
> >http://stackoverflow.com/questions/1252915/scala-how-to-define-generi...
>
> > > 2010/9/2 Cédric Beust ♔ <[email protected]>
>
> > > > On Thu, Sep 2, 2010 at 2:20 PM, Graham Allan <
> > [email protected]>wrote:
>
> > > >> One thing that the page doesn't include (AFAICT) is a discussion of
> > what
> > > >> you
> > > >> have referred to elsewhere on this mailing list as a 'Turing-complete
> > type
> > > >> system'.
>
> > > > It's the kind of feature that enables hacks such as this one<
> >http://en.wikibooks.org/wiki/C%2B%2B_Programming/Templates/Template_M...>.
> > > > If you don't feel like reading it, somebody managed to create C++
> > templates
> > > > which, when fed to the compiler, will produce error messages that list
> > prime
> > > > numbers.
>
> > > > It's awesomely clever but why you would put this as a requirement to
> > > > choosing a language is beyond me. If you don't think that this makes a
> > > > language complex, you are probably hanging out with people who love
> > Haskell
> > > > and who can tell you the difference between a catamorphism and an
> > > > anamorphism in their sleep.
>
> > > > --
> > > > Cédric
>
> > > --
> > > Kevin Wright
>
> > > mail / gtalk / msn : [email protected]
> > > pulse / skype: kev.lee.wright
> > > twitter: @thecoda
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "The Java Posse" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<javaposse%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/javaposse?hl=en.
>
> --
> Kevin Wright
>
> mail / gtalk / msn : [email protected]
> pulse / skype: kev.lee.wright
> twitter: @thecoda

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to