Hi,
I just wanted to know how to handle functions parameters in newLisp, in particular those ones (I only saw optionnal parameters in the docs):
- rest parameters;
- keyword parameters;
Thanks.
functions parameters
You can implement named parameters this way:
Arguments are evaluated and assigned to the local variables.
Code: Select all
(define-macro (foo)
(local (len width height)
(bind (args) true)
(println "len: " len " width:" width " height:" height)
))
(foo (width (+ 15 5)) (height 30) (len 10))
; this prints
len: 10 width:20 height:30
-
- Posts: 388
- Joined: Thu May 08, 2008 1:24 am
- Location: Croatia
- Contact:
Thanks for all your replies,
newdep : &rest and &optional were exactly what I was looking for. Now I need to test "args" within newLisp.
Lutz : this is a great example of a macro use : thanks for it !
Do you think such a markup langage http://www.nongnu.org/skribilo/ can be implemented in newLisp? In fact, that's what I want to do as a first project (with less features), but maybe I'm too pretentious/ambitious.
newdep : &rest and &optional were exactly what I was looking for. Now I need to test "args" within newLisp.
Lutz : this is a great example of a macro use : thanks for it !
Do you think such a markup langage http://www.nongnu.org/skribilo/ can be implemented in newLisp? In fact, that's what I want to do as a first project (with less features), but maybe I'm too pretentious/ambitious.
-
- Posts: 2038
- Joined: Tue Nov 29, 2005 8:28 pm
- Location: latiitude 50N longitude 3W
- Contact:
I often ask for named parameters too :-) (http://www.alh.net/newlisp/phpbb/viewtopic.php?t=2180) There are many ways of implementing it - I just usually forget them when I need them...
skribilo looks interesting - but a substantial project too.
skribilo looks interesting - but a substantial project too.
Lutz, could you add this to "Code Patterns" section 4. Local variables?Lutz wrote:You can implement named parameters this way:
Arguments are evaluated and assigned to the local variables.Code: Select all
(define-macro (foo) (local (len width height) (bind (args) true) (println "len: " len " width:" width " height:" height) )) (foo (width (+ 15 5)) (height 30) (len 10)) ; this prints len: 10 width:20 height:30
-- xytroxon
"Many computers can print only capital letters, so we shall not use lowercase letters."
-- Let's Talk Lisp (c) 1976
-- Let's Talk Lisp (c) 1976