Is there a builtin compose function in newlisp?
No compose function, but for sure other means to achieve similar. This link talks about function factories and the first-class nature of lambda expressions in newLISP:
http://www.newlisp.org/index.cgi?Closures
General info about differences to Common Lisp and Scheme:
http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs
Also, 'apply' has a reduce option:
http://www.newlisp.org/downloads/newlisp_manual.html#apply
There is also a 'curry':
http://www.newlisp.org/downloads/newlisp_manual.html#curry
I wrote the post "Composition of functions and macros (//http)" on my blog.
((composition 'f1 ... 'fn) _ _ _) = (f1 (f2 ... (fn _ _ _)))
If there was no significant change from February 2010, you should be able to cut and paste whole post in your editor and it should work.
Thank you , Kazimir.
These seem to work.
;; Compose two functions. Both accept only 1 argument.
(define (atop f g)
(expand (lambda (a) (f (g a))) 'f 'g))
;; Compose two functions. The first to be called accepts
;; any number of arguments.
(define (atop* f g)
(expand
(lambda () (f (apply g (args))))
'f 'g))
Thanks to Kazimir Majorinc for the idea of using expand.