#!/home/jj/bin/camilax =head1 Functors in CAMILA In this file we have examples of how to use Functors in camila =head2 SYNOPSIS f-set({1,2,3}) = {f(1),f(2),f(3)} f-seq(<1,2,3>) = f->* ([1->11,2->22,3->33]) = [f(1)->11,f(2)->22,f(3)->33] *->f ([1->11,2->22,3->33]) = [1->f(11),2->f(22),3->f(33)] f _o_ g (1) = f(g(1)) f _x_ g (<1,2>) = id-{1,2,3} = [1-> 1 , 2-> 2 , 3 -> 3 ] _c 7 _o_ f (3) = 7 =cut f(x)=x .* x ; gg(x)=x .+ x ; if(f-set({1,2,3}) == {f(1),f(2),f(3)} /\ f-seq(<1,2,3>) == /\ id-{1,2,3} == [1-> 1 , 2-> 2 , 3 -> 3 ] /\ ; _c 7 _o_ f (3) == 7 /\ (_c 7 _o_ f) (3) == 7 /\ ; f _o_ gg (1) == f(gg(1)) /\ (f _o_ gg) (1) == f(gg(1)) /\ f->* ([1->11,2->22,3->33]) == [f(1)->11,f(2)->22,f(3)->33] /\ ; f _x_ gg (<1,2>) == /\ ; (f _x_ gg) (<1,2>) == /\ (*->f) ([1->11,2->22,3->33]) == [1->f(11),2->f(22),3->f(33) ] -> pp("ok"), else -> pp("1 ERROR")); a <- [1 -> 2, 2 -> 3 , 3 -> 4]; b <- 7; xa <- [ a -> a, b -> f(3) , (f ->*(a)) -> 2 , ( *-> f)(a) -> 3] ; xc <- [ a -> a, f ->*(a) -> 2 , *-> f(a) -> 3] ; xb <- [ [ 1 ->2 , 2 ->3 , 3 ->4 ]->[ 1 ->2 , 2 ->3 , 3 ->4 ], 7 -> 9, [ 1 ->2 , 4 ->3 , 9 ->4 ]->2 , [ 1 ->4 , 2 ->9 , 3 ->16 ]->3 ]; xd <- f ->* (a) + (*-> f)(a); xe <- [ 1 ->4 , 4 ->3 , 9 ->4 , 2 ->9 , 3 ->16 ]; xf <- f ->* ( ( *-> f) (a)); g(x) = (*-> f) (f ->* (x)); xg <- (f-set-seq) ->* ([<{1,2,3},{1,2}> -> "aaa", <{1,2,3},{2,5}> -> "bbb" ]); ;nwrite(stdout,xf); pp(if(f-set({1,2,3}) == {1,4,9} /\ f-seq(<3,4,5>) == <9,16,25>/\ f-set-seq(<{1,2,3},{1,2}>) == <{1,4,9},{1,4}> /\ xa==xb /\ xf == g(a) /\ xd == xe /\ f-set(f-set(<5,6,7>)) == {625,36.*36,49.*49} /\ (*->f)([1->3,5->5]) == [1 -> 9, 5 -> 25]/\ f->*([1->3,5->5]) == [1 -> 3, 25 -> 5] -> 'ok, else -> 'error1));