<nij->
Has anyone used this C->CL compiler? Written in its doc is "C memory is backed by regular Common Lisp arrays." .. I wonder if this lowers the performance of the C code?
yauhsien has joined #commonlisp
taiju has joined #commonlisp
<aeth>
if you write one, back the memory by static-vectors mwahahaha
<dbotton>
nij- I plan on trying it out at some point to offer the ability (for marketing purposes) to add events in the builder in C :)
<dbotton>
You can already add events in JS by using (js-execute target "") in the buidler, and plan also on playing with Python and maybe Basic
azimut has joined #commonlisp
<nij->
What do you mena by "add events in LANG-FOO"?
<nij->
But, in theory.. should that kind of C compiler slower than native C? I mean, Lisp array is a kind of abstraction already.. I'd be surprised if the performance'd be similar.
<White_Flame>
casting contents of a byte array into longer ints & floats in standard CL would be slow
<White_Flame>
also, you'd need bounds checking on all the time for every "memory" access, unless you're willing to crash or you run a 32-bit C with 4GB allocated
<White_Flame>
plus, would have to do weird things with function pointers
<White_Flame>
(something which webasm does tackle, though)
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
<nij->
White_Flame hmm not sure what that implies on my question..
frgo has quit [Read error: Connection reset by peer]
totoro has joined #commonlisp
yauhsien has joined #commonlisp
lisp123 has joined #commonlisp
<lisp123>
A couple of things I wanted to ask
<lisp123>
1) Does anybody find Maxima's API a bit strange? Wasn't straight forward to follow
<lisp123>
2) I've been doing a thought experiment to add metadata to lists .. e.g. let "x" be of type car, then undertaking a series of transforms that maintains type, e.g. (f (g (h (i (j x))))) should have type car
<lisp123>
however its annoying to recurse down every time, so I've been modelling such data as CLOS with 2-slots - 1 the transformation (above) and 2 the type of the transformation (car)
<lisp123>
Has anyone done something similar / thought about something similar & has recommendations
<jackdaniel>
I think that "of type car" is quite ambiguous in the context of list, I had to read whole thing twice before I've realized that you mean a vehicle, not the first element of the list
<lisp123>
oops
<jackdaniel>
if you model a function then why not make it a funcallable (and not a standard class)?
<jackdaniel>
then you could (setf (fdefinition f) #<the-funcallable>) and (f x); what's more, (reader #'f)
<flip214>
lisp123: isn't that just a kind of type-annotation or -derivation of functions?
<lisp123>
flip214: yes. noting that if y is a bus then (f (g (h (i (j y))))) is of type bus
<flip214>
if #'j takes a type C and F returns a type C, and the argument/return types inbetween are compatible, that's what you expect?
<lisp123>
jackdaniel: Don't quite follow as I'm not too close to the concept of funcallables
<flip214>
well, SBCLs type derivation has improved recently... perhaps with sb-ext:*derive-function-types* and sb-introspect:function-type you can derive the output type of that chain already
<lisp123>
I see
<lisp123>
Stepping back a bit, the key thing I want to hone in on is the concept of adding "metadata to lists". Lists as recursive structure provide a lot of benefits, but at the same time cannot hold as much information as other structures
Inline has joined #commonlisp
yauhsien has quit [Ping timeout: 245 seconds]
<lisp123>
For example, if I look at the rope data structure, which I'm not close to at all and could be completely mistaken, it holds metadata about the underlying string by having each leaf hold a string and a length
<lisp123>
So I guess one of the questions is do people somewhat commonly look to add metadata to lists and anything of note in this topic area. It seems sensible to me to add in type information whilst constructing lists, so that later when they are reused, that information is already there
<lisp123>
In some ways its just a form of memoization I guess
Algernon69 has quit [Quit: Leaving]
Algernon69 has joined #commonlisp
Josh_2 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
Algernon69 has quit [Ping timeout: 264 seconds]
pillton has quit [Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)]
azimut has joined #commonlisp
<phantomics>
Has anyone used cl-flamegraph lately? It seems its dependencies have been deprecated for a while, at least for SBCL. Trying to load it I get an error saying 'Symbol "MAP-TRACE-SAMPLES" not found in the SB-SPROF package.' and upon review I found that that symbol was removed from sb-sprof several versions of SBCL ago
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
jmdaemon has quit [Ping timeout: 255 seconds]
Oddity has quit [Ping timeout: 268 seconds]
<pjb>
(type-of (wheels my-car)) --> car ???
lisp123 has joined #commonlisp
<Josh_2>
Crazy wheels for that car
shka has quit [Read error: Connection reset by peer]
shka has joined #commonlisp
tyson2 has joined #commonlisp
<edgar-rft>
(wheels-of my-car) => ?
<pjb>
edgar-rft: it's expected to return a list of wheels.
<mxben>
Thanks to this author (who is present in this channel too) sending personal insults to me, I am leaving IRC forever. No thanks for this disappointing experience from the author after I joined with IRC eagerness and for expressing eagerness in the author's work.
<jackdaniel>
I believe that these are two different people; but I don't care enough to pursue the topic. if the accusation of harassment is true - whomever you are please don't do that
<hayley>
mxben had brought up this issue in #lispcafe some time ago.
<lisp123>
no the guy has some strange stalkerish vibes to me (found out what industry I'm in, for a newcomer, strangely focused on my name, etc.)
<lisp123>
Guess I will have to be careful nothing more comes from it. I created a few HN accounts over the years as I kept forgetting my password, and there's a tinge of self promotion, but its hardly much
<hayley>
dang's response on HN suggested you used both signaporecode and Lisp-Stat in a short period of time. And if you did forget your password in that time, it's not great to complement yourself that way (though I don't know if you did, so please don't interpret it as me saying you did).
<lisp123>
I am not lisp-stat...
<lisp123>
I tend to upvote all CL posts and compliment them regardless......lol at getting banned at over that
scymtym has quit [Ping timeout: 244 seconds]
Brucio-61 has quit [Ping timeout: 272 seconds]
<jackdaniel>
I've talked with both Steven and lisp123 and they both give very distinct impression, that's why I've said the above
<_death>
maybe it's about your first comment.. "I should sponsor the guide's author" (where that author is yourself)
Brucio-61 has joined #commonlisp
Algernon69 has quit [Quit: Leaving]
<_death>
"I found online" (where you published it yourself)
gxt_ has quit [Write error: Broken pipe]
azimut has quit [Remote host closed the connection]
<lisp123>
shrug
azimut has joined #commonlisp
<lisp123>
maybe i was bored, i cant remember what I type always
<lisp123>
i've been here two years, i hardly see myself as self promoting
<_death>
indeed, this is all offtopic here
gxt_ has joined #commonlisp
<semz>
lol
<pjb>
In any case, one has to self promote, nobody else will do for you.
<lisp123>
well i hope that lisp-stat guy didn't get banned lol, his charts were actually quite good
<lisp123>
I might write to them about it
<gin>
singaporecode looks fishy to me. the first few comments were complimenting this ashok guy's articles. more comments like that later too. pretending to promote your own work as someone else would be frowned upon in any community, I guess. losing passwords makes sense but losing your identity along with the password and becoming someone else to complement your own work is weird!
<jackdaniel>
I think that most people share your sentiment gin; either way let's focus on the channel topic
<lisp123>
jackdaniel: I see
<gin>
lisp-stat guy seems fine. looks like dang just picked singaporecode's latest comment to warn about their past behavior. there is no direct-messaging facility on hacker news, so that must be a workaround dang chose.
<gin>
jackdaniel: oops! sorry. for a moment, i thought this was #lispcafe. but offtopic here and possibly offtopic in #lispcafe too. irc drama after a long time. my apologies
yauhsien has joined #commonlisp
<pjb>
gin: if you're a lisper, nothing's off-topic in #lispcafe ;-)
<hayley>
Careful: Lisp is off-topic in #lispcafe.
<pjb>
hayley: you don't seem to take that much into account anyways.
<gin>
lol. glad to know that.
<pjb>
And neither does gilbert.
<hayley>
pjb: I'll have you know the SBCL GC is written in C, so my rambling is on-topic, thanks.
<drakonis>
what makes a lisper?
<pjb>
hayley: :-)
<pjb>
drakonis: writing lisp code. The more lisp code you write, the more of a lisper you are.
<drakonis>
i see
thuna` has joined #commonlisp
<gin>
i have sadly been away from Lisp for sometime, so #lispcafe is perfect for me. :D the problem is that nobody in our company works on Lisp and no new hobby projects too right now. so I don't get much of a chance to work on Lisp.
<drakonis>
does scheme count :V?
<pjb>
There's an alternate path, which is writing lisp implementation (any language goes), but if you don't write some lisp code, you may still be a stranger.
<pjb>
gin: one trick is to use emacs, and write some personnal extensions in emacs lisp code.
<White_Flame>
lisp123: your annotation actually seems closest to units libraries
<White_Flame>
eg, you have 23cm, as you apply functions you still have cm
<pjb>
gin: you can do that in any professionnal setting.
<pjb>
White_Flame: nope.
<pjb>
White_Flame: (surface side) -> (expt cm 2)
<gin>
I use emacs. which lisper does not. i should get into the habit of writing my own extensions. great idea that is.
<pjb>
White_Flame: or I mean, using Haskell typing notation: (surface side) :: (expt cm 2)
<White_Flame>
pjb: I don't see what that has to do with it
gxt_ has quit [Remote host closed the connection]
<pjb>
gin: sometimes, you can write a lot of (emacs) lisp code on the job, eg. if you generate code for your job project from emacs lisp.
<pjb>
White_Flame: the result type doesn't depend on the input, it depends on the function!
<White_Flame>
obviously, that's not what he was talking about
<White_Flame>
eg, if starting with a car (vehicular), concatenate them into a train etc would be possible
<pjb>
Right.
<White_Flame>
but still the type of annotation in his idea seems affixed to values in the same way that units libraries affix their unit
<lisp123>
White_Flame: Yes
<_death>
personally I associated it with the Layered Data chapter in Software Design for Flexibility
<lisp123>
pjb: Thanks, I was thinking something very similar
<lisp123>
The currency slot is kept through the operations yes?
<_death>
line 2315 looks weird
<lisp123>
pjb: yes, that's exactly what I'm after
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
livoreno has quit [Ping timeout: 255 seconds]
livoreno has joined #commonlisp
<lisp123>
Is there a way to specialise a defgeneric, similar to the following: (defgeneric (item1 item2)) then defmethod where item1 and item2 are of the same class?
<pjb>
lisp123: indeed, each operation checks the units of the arguments for consistency, and compute the unit of the result and the magnitude of the result.
<pjb>
lisp123: better use normalized units. eg. meter instead of centimeter.
<pjb>
lisp123: a unit can also be a standard-class, if you have appropriate operations.
<lisp123>
pjb: I see, that makes sense
<pve>
Hi, in playing around some more with my compute-with-arrows macro, I decided to add operations for accessing properties of objects.
<pve>
One operation uses the "of" symbol which allows for typing .. name of person <- "Peter" ...
<pve>
The other operation uses the form "'s", which allows for typing .. person's name <- "Peter" ...
<pve>
However, it occurs to me that forms inside the "compute" forms might also use the "of" symbol.
<pve>
At least I think loop uses "of".
<pjb>
pve: but the scope should be clear.
<pjb>
pve: loop has a syntax.
<pve>
So I think I should macroexpand inner forms before walking them..
<pjb>
pve: you can always use progn.
<pjb>
pve: (compute-with-arrows (loop for person in persons collect (progn name of person)))
<pjb>
assuming compute-with-arrows uses code walking to perform deep syntax substitution.
<pjb>
pve: otherwise, you can use a macrolet: (compute-with-arrows (loop for person in persons collect (with-arrows name of person)))
<pve>
pjb: yes, it does "dumb" walking
<pjb>
in that case define a macrolet in the expansion to go back to with-arrows syntax.
<pve>
but I was thinking of the case (compute ... (loop for x being each hash-key of my-table ...))
<pve>
it will walk the loop form and happily substitute the "of"
<pve>
so my hope is that macroexpanding loop first might resolve this
<pjb>
pve: you should macroexpand the loop before code walking it.
<pve>
yes!
<pjb>
Indeed, it will.
<pve>
pjb: thank you
<_death>
it won't solve it in the general case
<pve>
_death: yeah, I would not assume so
<pve>
The new stuff is after the line ';; Accessing using "of"' in case anyone wants to have look :)
<_death>
(let ((of (make-hash-table))) (loop for of being each hash-key of of collect of))
<White_Flame>
why not (loop with of = (make-hash-table) ...) ?
<White_Flame>
just to rake it through the muck even more ;)
<_death>
just my style.. I often prefer to limit the complexity of my loop forms
<pve>
_death: sure, I can't bind the "keywords" inside the compute form. I use M-x highlight-regexp to remind myself of this.
<pjb>
just see: (macroexpand '(loop with of = (make-hash-table) for of being each hash-key of of collect of))
<pve>
pjb: my macro will look for binop patterns like "a op b", so in the case of loop I should be alright?
<pve>
after macroexpansion, that is
<pve>
hmm, or I guess I can't be sure..
<pve>
because it could conceivably expand into (let (a of b) ... )
pranavats has left #commonlisp [Error from remote client]
pranavats has joined #commonlisp
<pjb>
yes, after macroexpansion.
<pjb>
you also need to process special operator specially.
ebrasca has joined #commonlisp
dlowe has quit [Read error: Connection reset by peer]
dlowe has joined #commonlisp
frgo has joined #commonlisp
waleee has joined #commonlisp
<pve>
the macrolet looks like the proper approach, I probably should do that
mbrndtgn has quit [Quit: Bye!]
dBc has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
Catie has quit [Quit: switching clients]
Catie has joined #commonlisp
<pve>
Actually, since the forms can macroexpand into basically anything, doesn't it make sense to *not* macroexpand, so the programmer (i.e. me) can visually inspect the code for potential interference with other macros?
<pve>
Not that it's a particularly good solution, but still
<pve>
highlighting the operators in emacs helps quite a bit
rogersm has joined #commonlisp
torbo has joined #commonlisp
recordgroovy has quit [Quit: me_irl]
<pjb>
pve: if you use a macrolet, then you can avoid macroexpanding, and only process "toplevel" forms.
causal has joined #commonlisp
<pjb>
pve: something like: https://termbin.com/uqz9 ; you can explicitely pass the env when the defmacro augments the environment (if you need to pass data from with-foo to foo, you can do it thru the environment by declaring local macros, or local symbol-macros.
<pjb>
)
<pve>
pjb: yep, thanks
waleee has quit [Ping timeout: 240 seconds]
zachel_ has joined #commonlisp
zachel has quit [Ping timeout: 240 seconds]
beach` has joined #commonlisp
beach has quit [Killed (NickServ (GHOST command used by beach`!~user@2a01:cb19:150:3400:5bdc:8dc5:9f7e:d578))]
beach` is now known as beach
scymtym has joined #commonlisp
NotThatRPG has joined #commonlisp
thuna` has quit [Ping timeout: 252 seconds]
nij- has joined #commonlisp
analogsalad has joined #commonlisp
torbo has left #commonlisp [ERC 5.4 (IRC client for GNU Emacs 28.1)]
anticomputer has quit [Remote host closed the connection]
frgo has quit [Read error: Connection reset by peer]
anticomputer has joined #commonlisp
MajorBiscuit has quit [Ping timeout: 245 seconds]
orestarod has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
masinter has joined #commonlisp
frgo has joined #commonlisp
thuna` has joined #commonlisp
cosimone has quit [Read error: Connection reset by peer]
dBc has quit [Quit: leaving]
Oladon has joined #commonlisp
Schnouki has quit [Remote host closed the connection]
chiheisen has quit [Remote host closed the connection]
ardon has quit [Remote host closed the connection]
sirufer has quit [Remote host closed the connection]
artyn has quit [Remote host closed the connection]
mcoll has quit [Remote host closed the connection]
alethkit has quit [Remote host closed the connection]
jasom has quit [Remote host closed the connection]
\f has quit [Remote host closed the connection]
sm2n has quit [Remote host closed the connection]
axvr has quit [Remote host closed the connection]
theothornhill has quit [Write error: Connection reset by peer]
whereiseveryone has quit [Remote host closed the connection]
payphone has quit [Write error: Connection reset by peer]
hannibal_ad_port has quit [Remote host closed the connection]
ggb has quit [Remote host closed the connection]
srhm has quit [Write error: Connection reset by peer]
nytpu has quit [Remote host closed the connection]
ardon has joined #commonlisp
jasom has joined #commonlisp
ggb has joined #commonlisp
sirufer has joined #commonlisp
Schnouki has joined #commonlisp
\f has joined #commonlisp
sm2n has joined #commonlisp
chiheisen has joined #commonlisp
axvr has joined #commonlisp
payphone has joined #commonlisp
alethkit has joined #commonlisp
srhm has joined #commonlisp
hannibal_ad_port has joined #commonlisp
mcoll has joined #commonlisp
nytpu has joined #commonlisp
artyn has joined #commonlisp
payphone has quit [Remote host closed the connection]
artyn has quit [Remote host closed the connection]
sm2n has quit [Remote host closed the connection]
ardon has quit [Remote host closed the connection]
sirufer has quit [Remote host closed the connection]
hannibal_ad_port has quit [Remote host closed the connection]
srhm has quit [Remote host closed the connection]
chiheisen has quit [Remote host closed the connection]
ggb has quit [Remote host closed the connection]
Schnouki has quit [Remote host closed the connection]
\f has quit [Remote host closed the connection]
alethkit has quit [Remote host closed the connection]
axvr has quit [Remote host closed the connection]
jasom has quit [Remote host closed the connection]
mcoll has quit [Remote host closed the connection]
nytpu has quit [Remote host closed the connection]
ardon has joined #commonlisp
Schnouki has joined #commonlisp
whereiseveryone has joined #commonlisp
jasom has joined #commonlisp
ggb has joined #commonlisp
Schnouki has quit [Changing host]
Schnouki has joined #commonlisp
ardon has quit [Changing host]
ardon has joined #commonlisp
mcoll has joined #commonlisp
theothornhill has joined #commonlisp
chiheisen has joined #commonlisp
srhm has joined #commonlisp
nytpu has joined #commonlisp
payphone has joined #commonlisp
axvr has joined #commonlisp
sirufer has joined #commonlisp
artyn has joined #commonlisp
hannibal_ad_port has joined #commonlisp
sm2n has joined #commonlisp
alethkit has joined #commonlisp
morganw has joined #commonlisp
\f has joined #commonlisp
tyson2 has joined #commonlisp
pjb has quit [Read error: Connection reset by peer]
pjb has joined #commonlisp
nij- has quit [Remote host closed the connection]
cosimone has joined #commonlisp
pjb has quit [Ping timeout: 240 seconds]
pjb has joined #commonlisp
alethkit has quit [Remote host closed the connection]
sirufer has quit [Remote host closed the connection]
chiheisen has quit [Remote host closed the connection]
Schnouki has quit [Remote host closed the connection]
payphone has quit [Remote host closed the connection]
artyn has quit [Remote host closed the connection]
sm2n has quit [Write error: Connection reset by peer]
hannibal_ad_port has quit [Write error: Broken pipe]
mcoll has quit [Write error: Broken pipe]
ardon has quit [Remote host closed the connection]
ggb has quit [Write error: Broken pipe]
whereiseveryone has quit [Remote host closed the connection]
theothornhill has quit [Write error: Broken pipe]
\f has quit [Remote host closed the connection]
axvr has quit [Remote host closed the connection]
jasom has quit [Remote host closed the connection]
srhm has quit [Write error: Broken pipe]
nytpu has quit [Remote host closed the connection]
pjb is now known as Guest8327
sirufer has joined #commonlisp
ardon has joined #commonlisp
ggb has joined #commonlisp
Schnouki has joined #commonlisp
whereiseveryone has joined #commonlisp
jasom has joined #commonlisp
sm2n has joined #commonlisp
axvr has joined #commonlisp
srhm has joined #commonlisp
payphone has joined #commonlisp
\f has joined #commonlisp
hannibal_ad_port has joined #commonlisp
mcoll has joined #commonlisp
alethkit has joined #commonlisp
artyn has joined #commonlisp
chiheisen has joined #commonlisp
nytpu has joined #commonlisp
theothornhill has joined #commonlisp
Guest8327 has quit [Remote host closed the connection]
Dynom_ has joined #commonlisp
Dynom_ is now known as Guest6909
cage has joined #commonlisp
Oladon has quit [Quit: Leaving.]
frgo has quit [Remote host closed the connection]
btach has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
gxt_ has quit [Ping timeout: 268 seconds]
gxt_ has joined #commonlisp
dtman34 has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
dtman34 has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 276 seconds]
Lord_of_Life_ has joined #commonlisp
Lord_of_Life_ is now known as Lord_of_Life
tyson2 has joined #commonlisp
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
frgo has joined #commonlisp
nullsh has joined #commonlisp
frgo has quit [Ping timeout: 245 seconds]
waleee has joined #commonlisp
karlosz has joined #commonlisp
karlosz has quit [Client Quit]
jealousmonk has joined #commonlisp
mrcom has quit [Quit: Leaving]
frgo has joined #commonlisp
mrcom has joined #commonlisp
pjb has joined #commonlisp
Psybur has quit [Ping timeout: 268 seconds]
pjb has quit [Ping timeout: 264 seconds]
parjanya has joined #commonlisp
attila_lendvai has joined #commonlisp
jmdaemon has joined #commonlisp
jmdaemon has quit [Remote host closed the connection]
mrcom has quit [Remote host closed the connection]
Oddity has joined #commonlisp
pjb has joined #commonlisp
<dbotton>
If I am passed a function is there a way to determine the number of parameters needed to call that function?
irc_user has joined #commonlisp
<Josh_2>
keep calling it until no condition is signalled :joy:
<pjb>
dbotton: function-lambda-expression, but it may return nil, so nothing standard. Look in swank for implementation specific functions and portability layer.
<edgar-rft>
dbotton: you an try to analyze the return value of FUNCTION-LAMBDA-EXPRESSION but it's allowed to return NIL
<Josh_2>
Sounds like my idea isn't so stupid after all :sunglasses:
<edgar-rft>
Josh_2: your way doesn't tell if there are &optional &key or &rest parameters
<Josh_2>
Well neither does yours if the implementation returns nil in all cases