[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: native compilation units
From: |
Stefan Monnier |
Subject: |
Re: native compilation units |
Date: |
Sat, 11 Jun 2022 16:34:23 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
>> In which sense would it be different from:
>>
>> (cl-flet
>> ...
>> (defun ...)
>> (defun ...)
>> ...)
>>
>>
> Good point - it's my scheme background confusing me. I was thinking defun
> would operate with similar scoping rules as defvar and establish a local
> binding, where fset (like setq) would not create any new bindings.
I was not talking about performance but about semantics (under the
assumption that if the semantics is the same then it should be possible
to get the same performance somehow).
> (1) I don't know how much performance difference (if any) there is between
> (fsetq exported-fxn #'internal-implementation)
> and
> (defun exported-fxn (x y ...) (internal-implementation x y ...))
If you don't want the indirection, then use `defalias` (which is like
`fset` but registers the action as one that *defines* the function, for
the purpose of `C-h f` and the likes, and they also have slightly
different semantics w.r.t advice).
> (2) I'm also thinking of more aggressively forcing const-ness at run-time
> with something like:
> (eval-when-compile
> (cl-flet ((internal-implemenation (x y ...) body ...))
> (fset exported-fxn #'internal-implementation)))
> (fset exported-fxn (eval-when-compile #'exported-fxn))
>
> If that makes sense, is there a way to do the same thing with defun?
I don't know what the above code snippet is intended to show/do, sorry :-(
Stefan
- Re: native compilation units, (continued)
- Re: native compilation units, Lynn Winebarger, 2022/06/14
- Re: native compilation units, Stefan Monnier, 2022/06/14
- Re: native compilation units, Lynn Winebarger, 2022/06/14
- Re: native compilation units, Andrea Corallo, 2022/06/08
- Re: native compilation units, Lynn Winebarger, 2022/06/11
- Re: native compilation units, Stefan Monnier, 2022/06/11
- Re: native compilation units, Lynn Winebarger, 2022/06/11
- Re: native compilation units,
Stefan Monnier <=
- Re: native compilation units, Lynn Winebarger, 2022/06/12
- Re: native compilation units, Stefan Monnier, 2022/06/12
- Re: native compilation units, Lynn Winebarger, 2022/06/13
- Re: native compilation units, Stefan Monnier, 2022/06/13
- Re: native compilation units, Lynn Winebarger, 2022/06/14
- Re: native compilation units, Stefan Monnier, 2022/06/15
- Re: native compilation units, Lynn Winebarger, 2022/06/19
- Re: native compilation units, Stefan Monnier, 2022/06/19
- Re: native compilation units, Lynn Winebarger, 2022/06/19
- Re: native compilation units, Lynn Winebarger, 2022/06/20