[Haskell] Haskell developer is needed

2006-06-25 Thread pvainuk
An enthusiastic Haskell Developer with good C++ skills is needed to 
assist with the rollout of a new system.
This is a high profile project and the successful candidate will work 
in a very strong business oriented team where they will gain experience 
in wide variety of products and systems.
 Essential skills include: Haskell language, C++, office technology, 
Windows environment. Some finance knowledge is desired, but not 
essential.
 The ideal candidate with in depth understanding of computer science 
basics must  be passionate about Haskell. You will need a 1st class 
computer science degree or demonstrate sound work experience. A 
successful candidate must be prepared to work under the pressure in the 
very dynamic environment extended hours. This is an excellent 
opportunity for a talented developer to join a well established company 
with global presence and to work on the most cutting edge technologies 
and to really progress your career.

Location: HQ, London, UK
Please send your CV to [EMAIL PROTECTED]

___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell


Re: [Haskell] extensible records using associated types

2006-06-25 Thread Barney Hilken
Sorry if people are really bored with this thread, but I thought of  
another advantage of this approach.


Trex (and similar systems) have a limitation that stops you using  
them to define functions with default values. In systems like R (the  
stats package) most functions have a huge number of named parameters  
which usually take default values, but can be changed if necessary.  
In order to define such functions, what you want is an operation  
'update r s' which takes the value of the record 's' (the non-default  
values) for each field which 's' has, and the value of 'r' (the  
default values) for all other fields. The type of 's' should be such  
that it can only have fields which 'r' has, and each such field must  
have the same type, but it doesn't need all the fields of 'r'. The  
type of the result is the same as the type of 'r'.



This can't be typed in Hugs because you can only update particular  
fields, but we can easily add it to (at least the quadratic version  
of) AT-records.


Introduce a class 'subRecord r s' which means that every field of 's'  
is a field of 'r' with the same type:


>class subRecord r s where
>update :: r -> s -> r

The type 'Empty' is a subRecord of everything, and updating by it  
changes nothing:


>instance subRecord r Empty where
>update t Empty = t

For each label 'N' define:

>instance subRecord r s => subRecord (N a r) (N a s) where
>update (N x t) (N y u) = N y (update t u)

For each previous label 'M' define:

>instance subRecord r (M b s) => subRecord (N a r) (M b s) where
>update (N x t) (M y u) = N x (update t (M y u))


There are probably other useful additions to the records system which  
could be coded up in a similar way. In fact, the class 'Disjoint' of  
my original proposal already goes beyond hugs. Until it is clear what  
is useful and what is not, a system like this which requires little  
compiler support has the great advantage that it is easy to change.


Barney.

___
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell