A small erratum <*|||> has type (b -> c) (a -> a1 -> a2 -> b) a a1 a3 and it is nicer to add more * by defining these functions:
con = (flip.) .(.)

(<**>) = flip
(<***>) = con (<**>)
(<****>) = con (<***>)
(<*****>) = con (<****>)


Then the serie of <**|> gets:

(<*****|>) = (<*|>).(<*****>)
(<****|>) = (<*|>).(<****>)
(<***|>) = (<*|>).(<***>)
(<**|>) = (<*|>).(<**>)
(<*|>) = (.)

Now they behave more like (.), Eg: <**|> :: (a -> b -> c) (a1 -> b) -> a1 -> a -> c

And the rest becomes:

(<**||>) = (<*||>).(<**>)
(<**|||>) = (<*|>).(<**||>)
(<**||||>) = (<*|>).(<**|||>)
(<***||>) =  (<*||>).(<***>)  
(<***|||>) = (<*|>).(<***||>)





On Mon, Mar 29, 2010 at 2:04 AM, edgar klerks <edgar.klerks@gmail.com> wrote:
He All,

I was toying a bit around and found a function, which combines an function of arity 1 with 2.
Then I produced a whole sequence of these function, the number of * stands for the arity of the left function and the number of | stands for arity the right function. so <*|||> :: (b -> c -> d) -> (a -> c) -> a -> b -> d:

(<*****|>) = flip (<*|||||>)
(<****|>) = flip (<*||||>)
(<***|>) = flip (<*|||>)
(<**|>) = flip (<*||>)
(<*|>) = (.)
(<*||>) = (<*|>).(<*|>)
(<*|||>) =(<*||>).(<*|>)
(<*||||>) = (<*||>).(<*||>)
(<*|||||>) = (<*||||>).(<*|>)

con = (flip.) .(.)
(<**||>) = (<*||>).flip
(<**|||>) = (<*|>).(<**||>)
(<**||||>) = (<*|>).(<**|||>)
(<***||>) =  (<*||>).(con flip)
(<***|||>) = (<*|>).(<***||>)
(<****||>) = (<*||>).(con.con $ flip)

I found it interesting, but now I am stuck. is it possible to make the stars addable instead of the | or both?

Greets,

Edgar
Edgar

 



--
Flatliner ICT Service,
Email: Edgar.klerks@gmail.com,
Tel: +31727851429
Fax: +31848363080
Skype: edgar.klerks
Website: flatlinerict.nl
Adres: Koelmalaan 258,
1813JD, Alkmaar
Nederland