!       ><HopeProgs$Dir>.SimpleLsts        !
!                                          !
!------------------------------------------!
!                                          !
!  This is a collection of simple Hope     !
!  functions over lists.                   !
!                                          !
!------------------------------------------!






dec numlist : num -> list ( num ) ;
--- numlist ( 1 ) 
    <= [ 1 ] ;
--- numlist ( n ) 
    <= ( n :: numlist ( ( n - 1 ) ) ) ;




dec sumlist : list ( num ) -> num ;
--- sumlist ( nil ) 
    <= 0 ;
--- sumlist ( ( h :: t ) ) 
    <= ( h + sumlist ( t ) ) ;





dec append : list(alpha) # list(alpha) -> list(alpha);
--- append(nil , Second)
    <= Second;
--- append( (HeadFirst::TailFirst) , Second)
    <= HeadFirst :: append(TailFirst , Second);



dec ReverseList : list(alpha) -> list(alpha);
--- ReverseList nil
    <= nil;
--- ReverseList(Head :: Tail)
    <= append(ReverseList(Tail) , [Head]);

