Two Definitions of IF Function.


;---------------------------------------------------------------
; Last few days I played with definition of IF as function.
; It is typically not possible in Lisp family, but Newlisp
; can do that. I present here two definitions of IF that are
; specific not only because of that, but also because the
; definitions do not use any equivalent built in (like if, cond,
; case) and also, definitions do not use any variables.
;---------------------------------------------------------------
(set 'IF (lambda()
(eval
((args)
(- 5 (length
(string
(true?
(eval (first (args)))))))))))
(let ((x 2)(y 3))
(IF '(< x y)
'(println x " is less than " y)
'(println x " is not less than " y))
(IF '(> x y)
'(println x " is greater than " y)
'(println x " is not greater than " y)))
;---------------------------------------------------------------
(set 'IF (lambda()
(eval
((args)
(find (true? (eval (first (args))))
'(* true nil))))))
(let ((x 2)(y 3))
(IF '(< x y)
'(println x " is less than " y)
'(println x " is not less than " y))
(IF '(> x y)
'(println x " is greater than " y)
'(println x " is not greater than " y)))
(exit)
No comments:
Post a Comment