I'll give you a bit, tell me should I continue?
The fact that Reini Urban's project was abandoned more than 10 years ago (and not picked up by 'the community') should make you think, but is in itself no reason to stop working on your project.
Some random questions and remarks:
1.
Why look at CL? And if you are going to do that, why not make the (some) function really compatible.
2.
Consistent naming scheme? You now have predicate functions with names that do not end in '-p'.
3.
You are using vle-* functions. You should be aware that a non BricsCAD user may have loaded the complete vle-extension.lsp file. Which would result in a strange situation I think.
4.
Have you ever used the (tenth) function? Would some sort of (SafeNth) function not be more useful?
5.
You should be aware that writing code is but one part of the project. Testing, documentation, examples and maintenance are also required.
6.
Is the speed of the functions important? Or are you striving for 'elegant' code? See example below.
;;; (setq partLst '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
;;; (setq testLst (append partLst partLst '(0) partLst partLst))
;;; (KGX_BenchMark '((vl-some 'numberp testLst) (divtiply_some 'numberp testLst) (roy_some_1 'numberp testLst) (roy_some_2 'numberp testLst)) 5000)
; Benchmarking .......... elapsed milliseconds / relative timing <5000 iterations>
; (VL-SOME 'NUMBERP TESTLST) ............ 16 / 8.81 <fastest>
; (ROY_SOME_2 'NUMBERP TESTLST) ......... 63 / 2.24
; (ROY_SOME_1 'NUMBERP TESTLST) ......... 93 / 1.52
; (DIVTIPLY_SOME 'NUMBERP TESTLST) ..... 141 / 1.00 <slowest>
; Code taken from the (some) function in divtiply's code)
(defun divtiply_some
(pred lst
/ res
) )
)
)
; Some improvements:
(defun roy_some_1
(pred lst
/ res
) )
)
res
)
; With additional speed improvement based on Reini Urban's (std-%setnth):
(defun roy_some_2
(pred lst
/ res
) )
)
)
)
)
)
)
)
res
)