I try to generate values from the system-type like in an common Pascal function with a early return schema:
{ ASSUMING system_type is a global VAR }
FUNCTION font_name: String
BEGIN
result :='Courier';
IF system_type = 'darwin' THEN Exit('Menlo');
IF system_type = 'gnu/linux' THEN Exit('Monospace');
END;
But cannot find the right expression:
The snippet
(defmacro font-name ()
(declare (indent defun))
`(when (eq system-type 'darwin) "Menlo")
`(when (eq system-type 'gnu/linux) "Monospace")
"Courier")
gives me always "Courier" despite having system-type 'darwin.
This one works but with nested if else...
(defun i4w-editor-font ()
(if (eq system-type 'darwin)
"Menlo"
(if (eq system-type 'gnu/linux)
"Monospace"
"Courier")))
Is there a possibility to write an 'early-return' schema.
The first thing is: don't define a macro if there's no need to, and there's no need for that to be a macro. Macros are a whole separate topic, but: As with the return value of a function, a macro's expansion is the evaluation of the final form of its definition, and hence any call to your macro expands to
"Courier".There are other conditional constructs: