bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-apl] Simple package management


From: Blake McBride
Subject: [Bug-apl] Simple package management
Date: Tue, 24 Jun 2014 11:05:13 -0500

Thinking about package management, I came up with the following idea.  Although I admit it is very simple-minded, thinking about it, it may be all I need in most cases.

Requirements:

1.  All variable, function, and operator names within a single package must start with package-short-name, and then a delta.  So, for example, within my function editor package, all of my function and variable names would begin with FE∆

2.  Each package is stored in its own workspace.

Given the above assumptions, I created functions to do the following:

    pkg Pkg∆Require ws

This copies ws if package pkg is not present.

    Pkg∆List

This returns a list of currently loaded packages

    z←Pkg∆Present pkg

return 1 if package pkg is present

    Pkg∆Erase pkg

Erases package pkg

Here is the function list:

    ∇ Pkg∆Erase pkg;t                                     
[1]  t←⎕EX ((((1↑⍴t),(1+⍴,pkg))↑t)∧.=pkg,'∆')⌿t←⎕NL 2 3 4 
    ∇
 
 
    ∇ r←Pkg∆List;t                                               
[1]   ⍝ find names that have delta in them except in first column
[2]  r←,∧\'∆'≠t←(∨/'∆'=0 1↓t)⌿t←⎕NL 2 3 4                        
[3]  r←(⍴t)⍴(,' ',((×/⍴t),1)⍴t)[r+1+2ׯ1+⍳⍴r]                    
[4]   ⍝ right strip blank columns                                
[5]  ⍎'r←',((1=⍴⍴r)↑','),'(⌽∨\⌽'' ''∨.≠r)/r←((0,¯1↑⍴r)⍴'' '')⍪r' 
[6]   ⍝ sort if necessary                                        
[7]   ⍝ r←r[⍋r;]                                                 
[8]   ⍝ remove duplicate rows                                    
[9]  r←(¯1↓1,∨/r≠1⊖r)⌿r                                          
    ∇
 
 
    ∇ z←Pkg∆Present pkg;t                           
[1]  z←∨/(((1↑⍴t),(1+⍴,pkg))↑t←⎕NL 2 3 4)∧.=pkg,'∆' 
    ∇
 
 
    ∇ pkg Pkg∆Require ws             
[1]  ⍎(~Pkg∆Present pkg)/')COPY ',ws 
    ∇


Simple as that.  True, it doesn't have any dependencies, but I either know what they are, or I get told the first time I try to use it.

Sure, it's not the end-all for package management, it just suits many simple cases.

Just sharing some thoughts.

Thanks.

Blake


reply via email to

[Prev in Thread] Current Thread [Next in Thread]