|
|
|
|
|
by mikaelj
3905 days ago
|
|
If we were to name your operator "aif" instead (since there is no "when" in Python), and compare if and aif: ## if
val = func()
if val: # standard form
code(val) # of if
## aif
aif(func, code) # not obvious that it does the same thing
# and limits you to using a function defined
# elsewhere, or Python's crippled one-line lambda.
Whereas in Lisp, you'd do: ;; regular when
(let (val (func))
(when val ; standard form
(func val))) ; of when
;; awhen
(awhen (func) ; standard form of
(func it) ; when, with added bound value
; possibly other
; code goes here
)
Do you see how the two forms of Python look very different, and the two forms of Lisp look the same?If you don't like magic, you could invent an awhen that took an extra parameter that designates the name to bind the result to, e.g. (awhen val test). So. Yes - you can achieve the same thing, as in any programming language that is Turing complete. No - you cannot get the same syntax. And syntax affects readability and familiarity. |
|