4.3BSD/usr/contrib/apl/lib/fn/load

 load fdload9;typeload9;rankload9;shapeload9;mload9;rload9;lenload9;nameload9;nload9
CJ change the '8' in line 2 to '4' for apl2
  lenload9 { 8
fdload9 { 2 Lopen fdload9
  nameload9 { Lfloat fdload9 Lread lenload9
  }(0 = Rnameload9)/exit
okload9: nameload9 { fdload9 Lread nameload9
  typeload9 { ('fcn' = fdload9 Lread 1)/1 2 3
  rankload9 { Lfloat fdload9 Lread lenload9
  shapeload9 { Lfloat fdload9 Lread X/lenload9,rankload9
  rload9 { ''
  mload9 { nload9 { X/shapeload9,(typeload9 = 3)/lenload9
nextload9: rload9 { rload9, fdload9 Lread mload9
  } (0 # mload9 { nload9-Rrload9)/nextload9
  } (3#typeload9)/rshapeload9
  rload9 { Lfloat rload9
rshapeload9: rload9 { shapeload9 Rrload9
  }(1=typeload9)/funload9
  rload9 {BJ nameload9,' { rload9'
  }21
funload9: nameload9 {nameload9, Lfx rload9
nameload9
}(0#Rnameload9)/4
exit: nameload9 { Lclose fdload9