libera/#lisp - IRC Chatlog
Search
0:33:03
mrcom
thymage: Yeah, I'm playing with it now. (Turns out ultralisp was seeing the same load/compile error as quicklisp, it just ignored it.)
0:53:01
dlowe
remember - if you have a function that generates code, it is super easy to convert it to a macro.
0:53:49
dlowe
so often, even if you are writing a macro, it can be useful to start with a function first.
1:13:54
thymage
Ah ok. I got to where I could pass a list to define-struct but I am getting parentheses in my output
1:14:44
mrcom
This thing is just a simple re-formatter. No connections between (struct x ...) and any references to x.
1:17:41
thymage
I moved the macro use into a wrapping function call so that I could move the parentheses and backtick out of the function body
1:18:29
mrcom
That will probably make it easier for your master plan, too, where you loop over types or whatever.
1:19:14
mrcom
What I can't figure out is how to reference struct fields. (return z.x) gets translated to "RETURN Z_X;".
1:19:59
thymage
Yeah, at some points I'm like maybe it just even makes sense to use strings. I have to for some of the type names. I think I need to basically make a naming scheme.
1:20:19
mrcom
I mean, they're doing it somehow. There's test cases for struct forward definitions, and c++ output.
1:22:32
thymage
Ah ok. Hmm, well I'm not too sure. I suppose it's feasible to extend the syntax and make a PR.
1:22:57
thymage
And I was noticing that about the formatting, because it seemed like typos would make it into the output.
1:28:55
mrcom
Yeah, there's very little syntax checking. It was happy with "(decl (((struct x) z)))", which returnsed "struct x; z;".
1:33:45
bougyman
I mean, it supports syntax goodies for hundreds of languages. I assume that's written in lisp.
1:34:14
thymage
Yeah, lisp makes it really easy to extend the syntax right from the get go in the language anyway
1:49:37
mrcom
No, nothing working yet. The good news is that you can define and external macro and expand it inside (struct ...).
1:54:20
thymage
Alright... one other plan. What if, instead of trying to pass all of the arguments in at once, actually that the struct is built by iterating over the list
1:54:59
thymage
So that, at all points, you still have access to continue to add to the grammar before you interpret it.
1:56:58
mrcom
At some point you'll still need to invoke (struct ...) and (function ...) with generated stuff.
2:04:52
thymage
I know. I just mean, can't I syntactically expand something and then evaluate it afterward
2:07:42
mrcom
The two-fold problem is a) finding some way of invoking (struct...), (function...), etc. with stuff it likes. and b)
2:10:15
mrcom
I think the c-mera folks had that same problem themselves. You'll notice that calling (simple-print) and running it through cm produce two very different things.
2:16:02
mrcom
thymage: First you create a .lisp file, such as my file xx.lisp: https://plaster.tymoon.eu/view/3259#3259
2:39:43
mrcom
thymage: Its easier to wrap something around (struct) than to try to shove something into it.
5:32:09
mrcom
thymage: Working example for programatically creating structure types: https://plaster.tymoon.eu/view/3261#3261
8:49:26
mrcom
Changed evaluation of arguments a bit; EVAL is back, and you must quote constant parameters; this is necessary to allow calculating non-constant values for the params.