I find it a bit ironic: I can't write a Scheme macro, which pre-evaluates arguments for arbitrary form. Because I can't determine if form is a macro or procedure application and thus can't handle those use cases differently.
I find it a bit ironic: I can't write a Scheme macro, which pre-evaluates arguments for arbitrary form. Because I can't determine if form is a macro or procedure application and thus can't handle those use cases differently.
"Nutrition Optimizer" (AKA "macros.cheap") is a timely math macronutrient cost optimizer, based on the cost of food at the Aldi chain. Macronutrients are different categories of food such as protein, carbs, and fat. This app will be especially handy after everybody is poor from all the tariffs. The generated diet is pretty basic and I'm not sure that many people would want to do it on a long term basis.
OpenNutrition
This is a nice free search engine for nutrition information. It has a lot of nice search filters for people with special dietary concerns, eg. gluten sensitivity.
Deuxième post de Sensai25 :
"En suite #bureautique, on a rien et énormément de développements rapides reposent sur les #macros #Excel ou du #VB et si on quitte se monde là on sort des rails et du support à grande échelle.
Et les #StarOffice et #LibreOffice ne sont pas au niveau."
Ma réponse :
Je n'ai pas eu l'occasion de tester, mais il y a à présent #Python sur LibreOffice pour faire des macros :
https://help.libreoffice.org/latest/en-US/text/sbasic/python/python_programming.html
Et comme on peut aussi en faire sur Excel, c'est une fenêtre intéressante à étudier pour se former et migrer en douceur !
J'ai découvert ça il y a peu, et il y a là, je pense, une belle opportunité à saisir pour changer les choses.
4/4
I keep learning a lot about Scheme hygienic macros and macroexpander and today we talked about using macro as identifiers in arbitrary position of s-expression, syntax parameters, variable transformers and identifier-syntax helper.
If I name the macro, the inserted code is a defalias, which works. Maybe it's just the last-kbd-macro case that is broken?
In older versions of GNU Emacs you could create a keyboard macro C-x (
type-type-type C-x )
, execute it C-x e
, and generate the elisp for it, by M-x insert-kbd-macro
.
For example in Emacs 27.1 creating a simple macro typing "ABBA" and inserting it gives me:
(setq last-kbd-macro
"ABBA")
Evaluating the form gives me that macro back on C-x e
.
This seems to have changed in never versions, when I try the same in Emacs 31.0.50 compiled from source today (27c41d026f7) the code generated is:
(setq last-kbd-macro
(kmacro "A B B A"))
but when I evaluate that I get the value shown in *Messages*
as:
#[256 "\301\242\302^[^\\305\300^B\306#\210\301^L\240*\207" [[65 66 66 65] (0) "%d" kmacro-counter-format-start kmacro-counter execute-kbd-macro kmacro-loop-setup-function] 5 kmacro]
and when try to execute the macro, I get this error:
Keyboard macros must be strings or vectors
The value of last-kbd-macro is:
#f(kmacro "A B B A")
Shouldn't this workflow still work??
TIL: There is an identifier-syntax macro that you can use to implement syntax-id-rules or do other fancy macro stuff.
My small overview of "JRM’s Syntax-rules Primer for the Merely Eccentric" paper about Scheme macros and useful tricks for writing them. Difficulty: medium-easy.
mpv https://youtu.be/A2vi3vQ15kM
Paper:
- http://www.phyast.pitt.edu/~micheles/syntax-rules.pdf
- https://hipster.home.xs4all.nl/lib/scheme/gauche/define-syntax-primer.txt
Spoiler: at the end of the paper a minimal scheme evaluator implemented purely with macros.
TIL: There is a syntax-error macro and it throws exception at expand time, rather than runtime. This is really useful to make macro fail early and prevent oopsies during the program execution.
Revolutionizing Rust Development: Introducing Crabtime for Enhanced Macro Capabilities
Crabtime is set to transform how developers write macros in Rust, drawing inspiration from Zig’s comptime. With its unique features, Crabtime offers a more powerful and readable alternative to existin...
Clojure: Turtles All The Way Down
https://makertube.net/videos/watch/a9b86e9d-e8c3-4190-8b89-7144e888effc
Introducing C Plus Prolog: A Unique Fusion of C and Prolog for Modern Development
The advent of C Plus Prolog (C+P) offers a fascinating blend of the efficiency of C with the expressive power of Prolog, challenging conventional programming paradigms. This innovative language aims t...
“A Generic Approach to Parsing CSV into Case Classes in Scala 3”
https://yadukrishnan.live/a-generic-approach-to-parsing-csv-into-case-classes-in-scala-3
**What Are Macros in Rust?**
Macros in Rust—your shortcut to clean, powerful, and reusable code!
Whether you're tackling procedural or declarative macros, Rust gives you the tools to extend the language itself. But what makes them so useful?
In this second #DevBytes post, I break down what macros are, how they work, and why they're such a big deal in Rust. Perfect for Rustaceans and curious devs alike.
Check it out here: https://smsk.dev/2025/03/01/what-is-macros-in-rust/
What’s your go-to use for macros?
#RustLang #Macros #Programming #DevBytes
Today I learned that Racket and Guile represent syntax objects for lists differently.
I don't know yet which one I prefer, because in Guile `syntax` not always returns a syntax-object as one could expect, sometimes it returns a list.
(use-modules (system syntax))
(syntax? (syntax (+ 3 4))) ;; => #f
(syntax? (syntax hi)) ;; => #t
On the other hand TSPL4 book says that #'(+ 3 4) returns a valid list.
Who read RnRS? What does it say for this case?
Are there any similar to Racket's syntax-e and syntax->list functions in Guile Scheme?