| << Prev | - Up - | Next >> | 
A functor is a piece of compiled Oz-code. A functor can be stored and accessed from a web address.
Oz provides extra values for describing web-addresses (URL's), so called virtual strings. Virtual strings are tuples composed from hashes and atoms. Virtual stings allow the programmer to compute with URL's.
PSLab = 'http://www.ps.uni-sb.de' 
Dir='~niehren/oz-course.html/Functors' 
PickleVersion = 'Version.3.2' 
fun{Conc URLs}
   case URLs  
   of [U] then U
   [] U|Us then U#'/'#{Conc Us}  
   end      
end 
URL= {Conc [PSLab Dir PickleVersion]}A functor is a value in Mozart. This means that a variable can have a functor as its value, i.e. the value of a variable can be a piece of compiled Oz-code.
 
FileName='NewChart.ozf' 
File = {Conc [URL FileName]}   
NewChart_Functor={Pickle.load File} The procedure Pickle.load returns a functor when given an URL. A more interesting thing you can do with a functor is to turn it into a module, which is loaded on need. 
 
[Mod1 Mod2] = {Module.link [{Conc [URL 'NewChart.ozf']}
                            {Conc [URL 'ChartToWindow.ozf']}]} The procedure Module.link inputs a list of URL's and output a list of modules (which are loaded on need). 
declare  
<Functor To Module> 
{Browse [Mod1 Mod2]}        % the modules Mod1, Mod2 are not yet loaded
                            % even though their future value is defined
/*
{ForAll [Mod1 Mod2] Wait}   % {Wait X} waits until a future value  
                            % for X gets defined (as for instance
                            % by {Module.link [X]}) and then loads  
                            % this value.
*/ 
| << Prev | - Up - | Next >> |