random-nick has quit [Ping timeout: 256 seconds]
slant has quit [Remote host closed the connection]
cuz has joined #commonlisp
<cuz> Hello! I'm new here. I just started learning lisp. Is this a good place to get feedback on code (sorry if i'm double pinging anyone from #lisp)
<Bike> Sure
<Bike> I assume you're writing common lisp, rather than scheme or something, which have their own channels?
<cuz> Yep!
<jcowan> It's not clear to me when it would be a win to use eval rather than compile
<Bike> well, assuming the evaluator is less involved than the compiler, you'd want to evaluate code that runs once, but for something like an anonymous function that's called a bunch of times, compilation would be more expensive up front but make up for it with volume
<jcowan> "Oh, we lose money on each piece we sell, but we make up for it in volume!"
<Bike> righto
<cuz> I'm sure theres room for improvment: https://pastebin.pl/view/df1a5538
<Bike> in clasp i found that compilation was expensive enough in one case that using the interpreter a million times was still faster
<Bike> that was disheartening
<jcowan> But since there is no guarantee that eval actually doesn't compile or that compile does more than macroexpansion, it loooks like a wash
<Bike> little bit. but performance things like that are usually left to implementation discretion, so nothing new there
<Bike> cuz: you should use eql for characters, rather than eq
<Bike> cuz: also, your default "del" is actually a string
<Bike> your code is also pretty inefficient, but i don't know if you want advice about that
<Bike> otherwise seems like it should work though?
<cuz> Yeah defintely do, give me a second to research eq vs eql first
<jcowan> I was surprised to find out yesterday that Interlisp actually guarantees that eq works correctly on fixnums
<jcowan> (characters have two representations, as symbols and as fixnums)
<Bike> yeah, looks like it works, assuming you want (split ",,," #\,) to return nil rather than ("" "" "" "")
<jcowan> I'm not clear on why you'd want it to return ()
<cuz> Is del being a string akward for lisp? Coming from other langauges (split "hello world" #\ ) seems odd compared to (split "hello world" " ")
<jcowan> to my mind, a more interesting question is whether (split "" #\,) should return () or an error
<Bike> jcowan: i don't know, but it's an option in both lispworks and sharp-lispers's split-sequence, so i assume somebody wants it
<Bike> cuz: do you actually want it to be able to split on multiple character strings?
<Bike> like (split "a, b, c" ", ") => ("a" "b" "c")
<cuz> No just one
<Bike> why woult it be a string then?
<jcowan> I'd go whole hog and split on a regex inst4ad
<Bike> would
<Bike> if you want, you could make it a character designator rather than a character, so #\, and "," work just as well
<cuz> What would that look like?
<Bike> java split takes a regex, looks like
<Bike> cuz: replace (char del 0) with (character del)
<Bike> ::clhs character
<Bike> ...right. the function one
<cuz> And jcowan, I like the regex idea I'll have to work up to that
<Bike> efficiencywise, the basic issues are redoing work and consing. when you do subseq, that conses, i.e. allocates a new string to put the substring in, which is probably slow
<Bike> you can abate that by dealing with a start index instead
<Bike> like, in (split (subseq str 1) del), i mean, you still need to allocate subsequences for the result
<Bike> the position call recapitulates the work of find; you could just call position, and if it returns nil go to the (cons str ()) clause
<cuz> Ah I think I see it, there's no need to create a new substring when we can just track the start index of the string
<cuz> And the character function is exactly what I had in mind, thanks for sharing
cjb has joined #commonlisp
<Bike> Happy to help
Inline has quit [Remote host closed the connection]
Inline has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
<cuz> Is there a better way to check for an empty str than (= 0 (length str))
<Bike> nah, that's about it. or (zerop (length str)) is a little nicer.
yitzi has quit [Quit: Leaving]
lisp123_ has joined #commonlisp
<cuz> Thanks for the help. It's getting late so I'm going to hop off. As long as these basic questions aren't too bothersome I'll drop in again. It's really helpful getting feedback while learning. It's much easier to drop bad habits while picking up a language than after...
cuz has left #commonlisp [ERC (IRC client for Emacs 27.1)]
lisp123_ has quit [Ping timeout: 240 seconds]
Oladon has joined #commonlisp
peterhil has quit [Ping timeout: 268 seconds]
elf_fortrez has joined #commonlisp
elf_fortrez has quit [Quit: Client closed]
Bike has quit [Quit: slep]
peterhil has joined #commonlisp
Inline has quit [Remote host closed the connection]
Inline has joined #commonlisp
prxq_ has joined #commonlisp
prxq has quit [Ping timeout: 272 seconds]
Oladon has quit [Quit: Leaving.]
bilegeek has joined #commonlisp
Guest45 has joined #commonlisp
Guest45 has quit [Ping timeout: 246 seconds]
<beach> Good morning everyone!
slbtty has joined #commonlisp
bilegeek has quit [Read error: Connection reset by peer]
slbtty has quit [Client Quit]
bilegeek has joined #commonlisp
Guest45 has joined #commonlisp
peterhil has quit [Ping timeout: 272 seconds]
taiju has quit [Ping timeout: 272 seconds]
Guest45 has quit [Quit: Client closed]
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 258 seconds]
Lord_of_Life_ is now known as Lord_of_Life
taiju has joined #commonlisp
notzmv is now known as [deleted]
<Josh_2> Good morning beach
cjb has quit []
peterhil has joined #commonlisp
beegs has joined #commonlisp
bilegeek has quit [Quit: Leaving]
cjb has joined #commonlisp
Inline has quit [Quit: Leaving]
silasfox has quit [Ping timeout: 268 seconds]
silasfox has joined #commonlisp
dsk has joined #commonlisp
fe[nl]ix has quit [Ping timeout: 272 seconds]
lacedaemon has joined #commonlisp
lisp123_ has joined #commonlisp
lisp123_ has quit [Ping timeout: 272 seconds]
cjb has quit []
silasfox has quit [Ping timeout: 240 seconds]
silasfox has joined #commonlisp
lisp123_ has joined #commonlisp
bpanthi977 has joined #commonlisp
peterhil has quit [Ping timeout: 256 seconds]
<susam> Good morning, everyone!
<susam> Good morning, beach!
Cymew has joined #commonlisp
shka has joined #commonlisp
peterhil has joined #commonlisp
lisp123_ has quit [Ping timeout: 256 seconds]
frgo_ has joined #commonlisp
attila_lendvai has joined #commonlisp
frgo has quit [Ping timeout: 256 seconds]
pve has joined #commonlisp
frgo_ has quit [Remote host closed the connection]
frgo has joined #commonlisp
utis has quit [Ping timeout: 265 seconds]
utis has joined #commonlisp
hendursa1 has joined #commonlisp
hendursaga has quit [Ping timeout: 244 seconds]
lad has quit [Ping timeout: 246 seconds]
<jmercouris> good morning everyone
<beach> Hello jmercouris.
<jmercouris> beach: what do you think of wrapping CL in a simplified visual Lisp a la fructure?
<jmercouris> beach: in case you missed the link: https://github.com/disconcision/fructure
<jmercouris> I'm trying to make it approachable for people who are not programmers
<beach> I can't easily imagine myself not being a programmer.
<jmercouris> I have the same problem
<jmercouris> It's been so many years, it is like asking me to imagine being a tomato
<jmercouris> I don't know how tomatoes feel
<beach> Stuff like that looks a total waste of time to me, because everything would take way longer to define, so I can't imagine why people would prefer wasting their time like that rather than learning to do it more efficiently.
<easye> Given that there are more semantic cues in the fructure representation (position, color, shape) it is potentially more expressive than the line-oriented, 80x25 column representation baked into how languages have been defined for the last 50 years, it is potentially more expressive.
<jmercouris> beach: for the same reason people use Excel
<jmercouris> they are 'afraid' of languages, but a block based, simple UI could be useful
<jmercouris> I just want to help people make little macros/functions in Lisp
<easye> But I don't think that will really help "people who aren't programmers". They would become "programmers" but with a different set of cognitive basics.
<beach> I don't know anyone who uses Excel, so I can't interview any one to ask them.
<jmercouris> and I am trying to think of how to make it easier for non-programmers to benefit from programmring
<easye> jmercouris: the snarky answer is for them to learn about programming...
<jmercouris> well, yeah
<jmercouris> but you will not get someone who is a designer to learn about programming
<jmercouris> I still want them to be able to get some of the benefits in Nyxt though
<susam> I think the goal is a bit contradictory. "How ot make it easier for non-programmers to benefit from programming" in my mind sounds like "How to make programming easier for beginners?", so they are going to turn into programmers, after all.
<susam> s/ot/to/
<beach> jmercouris: Did you read the "blog" about Multics people teaching secretaries to write Emacs extensions in Lisp?
<jmercouris> I've not read that, no
<jmercouris> I think this is a quite different context though
<jmercouris> different time, different place
<easye> I seriously studied "visual programming languages" in the early 90s, especially wrt. representations of programs in VR/3space interfaces. In the end, I didn't see a real advantage to representing programs in 3space until people had some basic intuition about building things in 3space.
<beach> Well, I have no advice to give, so I can just wish you good luck.
<jmercouris> OK, I will keep exploring this
<jmercouris> I will try to learn what made excel successful
<easye> Copying VisiCalc is what made Excel successful...
<jmercouris> OK
<jmercouris> what made Visicalc successful?
<jmercouris> why are people willing to write little programs in excel?
<beach> I think it was at least partly that there was on need to express control explicitly, not to start or stop that control.
<jmercouris> right, no conditions
<jmercouris> just a set of operations
<jmercouris> hm, that is a good point
<jmercouris> I don't mean lisp conditions, I mean branches
<jmercouris> if, when, unless, etc
<beach> Yes of course.
<easye> VisiCalc was one of the killer apps for the 8bit computers of the 80s. You could essentially automate any small (or even large) business in a way that required "systems analysts" and "systems programmers" before.
<splittist> I don't think people program in Excel because they are afraid of programming. (Sometime one programs in Excel because one is afraid of Corporate IT.)
<easye> splittist: very much agree about not having to involve IT.
<beach> jmercouris: The main problem with visual languages is that you need a model of control that the users can understand...
<jmercouris> hm, yes
<beach> jmercouris: If you just compute outputs whenever inputs change, then you won'[t be able to express things like recursion.
<jmercouris> I think I will start with the simplest case, a simple function composed of functions
<jmercouris> like you said, no branches
<beach> Hardware people have a clock for that, but synchronism is an extremely difficult concept to master.
<jmercouris> and they can drag and drop function blocks
<beach> jmercouris: Like I said, you will get into all kinds of trouble with that if you want to do recursion or any other kind of repetition.
<White_Flame> every foray into any of this stuff always leaves me wanting actual AI to convey concepts to the machine. Anything less than that is going to be a cheap hack
<jmercouris> no loops/recursion either then
<beach> jmercouris: So as I recall, MAX (visual language for music) used a concept of a "token", which would trigger a computation.
<easye> A "token" used in something like a Petri Net <https://en.wikipedia.org/wiki/Petri_net>?
<beach> jmercouris: So either you are very limited in what can be expressed, or you have a difficult choice to make in coming up with a control model that your "non-programmer" users can understand.
<jmercouris> yes, simpler = less capabilities
<jmercouris> the tradeoff every langauge designer often makes
<beach> Oh, but here you are talking not Turing complete. Not many language designers are faced with that choice.
<beach> "Can I create a program to compute compound interest?" "Sure, but you have to change your program each time you want a different number of years!".
davep has joined #commonlisp
<beach> "Oh, you want 100 years? Then you need to repeat that box 100 times!"
<beach> As I wrote in one of my (unfinished) books. an essential part of programming is to express an infinite number of cases with a finite amount of code.
<jmercouris> yeah, I'll need to think more about this
<easye> Well, "countably infinite".
<jmercouris> it's just a concept I'm toying with, it will be perhaps a year or more until implementation starts
<jmercouris> I like to ask questions well in advance and think about things
pve has quit [Quit: leaving]
pve has joined #commonlisp
<_death> I tried using blockly some years ago at a job to give some basic "business rule" interface to non-programmers, but the conclusion was that it was too complicated and it had to be replaced with a simpler UI
<_death> (and a more limited business rule language)
peterhil has quit [Ping timeout: 272 seconds]
gera has joined #commonlisp
bpanthi977 has quit [Remote host closed the connection]
gera has quit [Read error: Connection reset by peer]
kevingal has joined #commonlisp
<pjb> beach: imagine yourself born in 1519. (that said there were Ramon Lull, and al-Khwārizmī).
lotuseater has joined #commonlisp
treflip has joined #commonlisp
lisp123_ has joined #commonlisp
<beach> I guess I have chronic lack of imagination.
<pjb> Eventually, you'd have an AI that would "program itself" to answer to the demands of the users. Will that be "programming" the AI. Users will have to specify what they what; this can be called "programming". But even that, users won't be able to do it: they're not able to do it with us programmers! If they could tell us what they want…
<pjb> beach: my point is that without computers, it's difficult to be a programmer. Even if some of the attitude can be transfered. A funny point: in the Armée de l'Air, the only reconversion possible for programmers, is into textile procurement (to make the uniforms). (not actually a bad option, but it still sounds strange).
<_death> there'll be a component that infers what they have in mind, literally
<pjb> Of course, it's an important part of AI to build a model of the external agents.
<pjb> s/AI/I/
<_death> using jaccard's loom?
<_death> *jacquard
mayuresh has joined #commonlisp
<mayuresh> hello. :)
<flip214> pjb: well, "just" invent your own computer... https://en.wikipedia.org/wiki/Antikythera_mechanism
<mayuresh> invent your own computer! that's interesting. :D
lisp123_ has quit [Remote host closed the connection]
<jmercouris> anything can be a computer, as long as it needn't be turing complete
<jmercouris> is a bag of coins not a computer?
<jmercouris> I add and remove coins to the bag to calculate new values
<mayuresh> you could say, "make" your own computer, but you'd need to have sex.
lisp123_ has joined #commonlisp
<mayuresh> :-p
<jmercouris> Let's try to keep it on topic everyone, my bad for continuing...
<mayuresh> but then again, test-tube babies are all the rage these days.
<jmercouris> please... on-topic
<mayuresh> roger roger.
<mayuresh> :-)
<mayuresh> i just found out about these 2 books on lisp;
<mayuresh> essentials of programming languages, and
<flip214> jmercouris: with enough coins (or stones) you can do lambda-calculus, so arbitrary calculations are possible, IMU
<mayuresh> lisp in small pieces
<mayuresh> both "eopl" and "lisp" seem to be very interesting.
<mayuresh> both books, i meant.
<_death> jmercouris: it's very easy for a process to be turing complete.. you can read about the principle of computational equivalence in http://www.rudyrucker.com/lifebox/html/
<jmercouris> I've heard good things about those books
<pjb> flip214: indeed, this is what I hinted at.
<pjb> flip214: note 1519 is the birth date of Leonardo Da Vinci ;-)
<mayuresh> pjb, flip214, there was a request to get back on-topic. please do so.
<mayuresh> at the earliest.
<mayuresh> :)
<pjb> oh, sorry.
lisp123_ has quit [Ping timeout: 256 seconds]
<mayuresh> jmercouris, do you know of anyone (personally) who's worked through those books?
<mayuresh> [off-topic] anyone here knows how to remap the "capslock" key to "control" on a p.c. running ubuntu?
<beach> mayuresh: Lisp in Small Pieces mostly uses Scheme, and it is not a book for learning Lisp or Scheme. It is essentially a book about language and compiler design.
<beach> mayuresh: But it is an excellent book. And the English translation is even better than the original, thanks to a totally brilliant translator.
<mayuresh> beach, thanks for that review, though i knew about the intent of the book.
<beach> And yes, I have read both the original and the translation, and I used the French one to teach from in some fairly advanced course.
<mayuresh> i decided to restart from the basics, right from "simply scheme" to "sicp" to "eopl" and "lisp" to prepare for common lisp.
prxq_ is now known as prxq
<mayuresh> after all, though i have been a c++ programmer, i haven't written a single program in over 15 years.
<beach> Isn't that a bit like the (rather silly, in my opinion) to study Latin before learning Spanish.
<beach> s/to/idea to/
<mayuresh> i don't remember much about programming anymore.
<mayuresh> that is taking an idea and building a program to realise it in code.
<mayuresh> 1.5 decades takes it's toll. :(
<beach> Yes, I see.
<mayuresh> plus there has been a long term illness to cope with.
<beach> If I were you, I would start with "Practical Common Lisp" instead.
scymtym has quit [Remote host closed the connection]
<jmercouris> If I were you I would start with gentle introduction to symbolic computation
<jmercouris> if you don't remember anything about programming
<beach> And I would certainly not do Lisp in Small Pieces before a book on Common Lisp.
<jmercouris> I would also download portacle
<mayuresh> i actually got motivated to return to programming because i read the introduction to "on lisp" and got blown away with the lisp way of writing programs.
<jmercouris> mayuresh: https://portacle.github.io/
<mayuresh> jmercouris, is that the previous edition of the book by touretzky?
<mayuresh> i heard that "dover" has brought out a newer edition with improvements done by touretzky.
<jmercouris> well, there are some improvements to be made
<jmercouris> for your purposes they are trivial errors I have found
<jmercouris> the book has misled me about Lisp somewhat, but it also gave me a wholistic understanding of many things not done in PCL
<jmercouris> PCL (practical common lisp) is for starting up quickly
<jmercouris> unless you have a practical reason for doing so (job, etc), then better to go slowly
<mayuresh> jmercouris, i can't go for a job, not eligible nor acceptable in the market.
<jmercouris> OK, that's irrelevant
<mayuresh> i am learning "common lisp" and going to work with it primarily for fun.
<jmercouris> great, then start with the book and link I reccommended you
<jmercouris> it will give you a lot to try
<mayuresh> sure, thanks.
<jmercouris> then you can join the clschool channel
<mayuresh> cool, thanks.
<mayuresh> on liberchat?
<jmercouris> yes
<mayuresh> libera.chat?
<jmercouris> no problem
<mayuresh> i also found a book about lambda calculus by "dover" on amazon.com
<jmercouris> that won't be very useful for you
<mayuresh> could some of you please check and tell me if that could be useful too?
<mayuresh> okay
<jmercouris> it may be interesting, but it won't make you a better lisp programmer
<jmercouris> at least not in a meaningful way
<mayuresh> okay
<mayuresh> i thought understanding lambda was important.
<jmercouris> only surface level stuff
CrashTestDummy3 has joined #commonlisp
CrashTestDummy has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 256 seconds]
<mayuresh> okay, i gotta go, time for snack followed by emacs training session.
<mayuresh> see you all later.
<mayuresh> thanks for the tips.
<jmercouris> no problem, goodbye
<mayuresh> special thanks to jmercouris for the links and encouragement.
mayuresh has quit [Quit: Leaving]
CrashTestDummy3 has quit [Ping timeout: 268 seconds]
peterhil has joined #commonlisp
lisp123_ has joined #commonlisp
peterhil has quit [Ping timeout: 252 seconds]
mingus has quit [Ping timeout: 240 seconds]
bpanthi977 has joined #commonlisp
lisp123_ has quit [Ping timeout: 258 seconds]
CrashTestDummy2 has joined #commonlisp
tyson2 has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
CrashTestDummy has quit [Ping timeout: 240 seconds]
mingus has joined #commonlisp
random-nick has joined #commonlisp
<flip214> minion: memo for mayuresh: # setxkbmap -option caps:ctrl_modifier ....
<minion> Remembered. I'll tell mayuresh when he/she/it next speaks.
scymtym has joined #commonlisp
xsperry has joined #commonlisp
lisp123_ has joined #commonlisp
karlosz has quit [Quit: karlosz]
Krystof has joined #commonlisp
peterhil has joined #commonlisp
terpri has quit [Ping timeout: 272 seconds]
lisp123_ has quit [Ping timeout: 240 seconds]
kakuhen has quit [Quit: Leaving...]
bpanthi977 has quit [Quit: bpanthi977]
treflip has quit [Remote host closed the connection]
<lisp123> is there a way to apply a function to all the slots of a defstruct automatically?
<lisp123> and return the object with the transformed slots?
<phadthai> various implementations allow to enumerate struct slot names, but it's implementation-specific; there might be some libraries to do it portable on those that do, perhaps as part of SWANK too... another independent way to do it would be using your own define macro and related tools
<_death> sounds like you want a list
<phadthai> for CLOS classes there's the MOP
<_death> (defstruct (foo (:type list)) a b c) (foo-b (mapcar #'1+ (make-foo :a 1 :b 2 :c 3))) => 3
<phadthai> and a struct can also be a vector inside, in which case it would also be possible to access the vector indexes as the slot contents
<lisp123> phadthai: thanks
<phadthai> well or a list like _death's example
<lisp123> _death: but the list only works for foo-b, I want an easy way to get new-foo
<lisp123> might just have to do it the old fashioned way of manually setting each slots value
<_death> the mapcar returns the new foo..
<lisp123> oh cool
<lisp123> is that portable code?
<_death> it's ANSI CL
<lisp123> First time I saw lists & structs being combiend
<_death> clhs defstruct
<lisp123> _death: thanks!
<phadthai> if you see at the top: "Macro DEFSTRUCT"
<phadthai> so one could if wanted also use a custom DEFINE-... macro
<phadthai> that can internally call defclass or defstruct, or any wanted alternative custom storage system
<_death> the old fashioned way (creating a function that takes a foo object and returns a new foo object) is also a good alternative.. probably the one you actually want in general
selwyn has joined #commonlisp
<phadthai> that custom DEFINE-... macro would have access to all the parameters supplied
<lisp123> thanks
<phadthai> including slot names of course
<lisp123> macros are still beyond my scope, but slowly getting there ;)
<lisp123> quite interesting that defstruct can be combined with lists
<phadthai> it'll vary with the implementation, but for fun, you can also macroexpand the defstruct form
contrapunctus has left #commonlisp [#commonlisp]
<phadthai> and see what special operators it calls
contrapunctus has joined #commonlisp
<_death> btw, yay for specbot and minion
<lisp123> phadthai: thanks, will do
treflip has joined #commonlisp
<_death> it's also interesting that defstruct's :type and be a specialized vector.. (defstruct (foo (:type (vector character))) a b c) (make-foo :a #\L :b #\O :c #\L) => "LOL"
<beach> minion: Welcome back!
<minion> thanks!
<phadthai> (defstruct (foo (:type (vector character)))
<phadthai> err, paste in the wrong window :)
<phadthai> very nice example
<phadthai> other macro-related magic is that unlike setq, setf (and related set operators like psetf, rotatef, shitf) are macros and it allows defining custom accessors... then also interesting is with-accessors, that internally will usually be implemented using (symbol-)macrolet, etc
<phadthai> so some may also use macros where functions are fine, but they are at the same time powerful and very useful to enhance the language, also as part of domain specific languages
<phadthai> with- macros are also commonly used for autocleanup with unwind-protect, for instance an implementation supporting concurrency locks will usually provide a related with-lock or such macro
<phadthai> bbl, have fun
livoreno has quit [Ping timeout: 265 seconds]
livoreno has joined #commonlisp
<phadthai> well will link to an example custom DEFINE- macro that wraps around DEFCLASS as it was at the beginning of the discussion: http://git.pulsar-zone.net/?p=mmondor.git;a=blob;f=mmsoftware/cl/server/store.lisp;hb=HEAD#l792
Bike has joined #commonlisp
lisp123_ has joined #commonlisp
amb007 has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
djuber has quit [Ping timeout: 258 seconds]
lisp123_ has quit [Ping timeout: 272 seconds]
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
aeth has quit [Ping timeout: 272 seconds]
contrapunctus has left #commonlisp [#commonlisp]
aeth has joined #commonlisp
contrapunctus has joined #commonlisp
djuber has joined #commonlisp
lisp123 has left #commonlisp [ERC (IRC client for Emacs 26.3)]
dlowe has joined #commonlisp
selwyn has quit [Read error: Connection reset by peer]
<_death> ouch, someone decided to deprecate COUNT clause in ITERATE (yes, ITERATE from 1989)
<Bike> they were talking about it before. i think the reasoning was that it was ambiguous wrt calls to the function
<_death> I'm not a user of iterate nowadays, but some libraries use it.. and now they emit a WARNING (not a style-warning..) which causes ASDF to pop up a debugger
<gendl> we have a crucial compatibility library which depends on ITERATE (i'm not sure if we use COUNT).
<Bike> well, when they tlaked about it before they were talking about making it a style warning or whatnot, i think
<Bike> i suggested a phased deprecation thing like sbcl does
aeth_ has joined #commonlisp
<_death> "Don't COUNT, COUNTING!"
<gendl> meanwhile I'm about to embark upon a project of integrating CLSQL into our environment. Gonna try it with sqlite to start with (which seems to be built into most linux distros)
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
aeth_ is now known as aeth
sander has quit [Quit: So long! :)]
<gendl> once upon a time i had my own lispy construct for SQL table definition which would automatically to ALTER TABLE when it noticed changes in table definitions... going to try to replace that with the built-in table def macros in CLSQL. Is CLSQL still the go-to thing for this? It seems to be a Kevin Rosenberg invention and I haven't heard much from him in this community lately...
sander has joined #commonlisp
<_death> I often just use strings.. there are libraries like sxql or cl-yesql
cracauer has joined #commonlisp
<gendl> "just use strings" -- you mean strings of SQL commands?
<_death> gendl: yes, but that's because my db usage isn't heavy.. if I were writing something larger I'd consider the libraries I mentioned
<_death> for example this week I started writing a small benchmark library that stores results in an sqlite db: mpv https://adeht.org/dump/vid-2021-06-30T0243.mp4
selwyn has joined #commonlisp
<shka> _death: this looks really useful!
<shka> _death: is it open source?
<shka> can i use it?
<_death> I don't mind putting it on github
<_death> but of course it needs some work :)
<shka> yeah, but it is major improvement over org mode file with test results :D
<shka> and manually editing it
yitzi has joined #commonlisp
<_death> shka: https://github.com/death/cheetos .. note that you need to create the db file yourself atm.. I did sqlite3 cheetos.db < ~/lisp/cheetos/db/create.sql in ~/.local/share/cheetos/
<_death> I'll add a readme/MIT license later today
<shka> greatly appreciated
<_death> some of the code is a bit ugly and could use factoring.. feel free to fix
<shka> dude, have you seen MY code?
<shka> :P
<_death> :)
<shka> it is advance ugly
<shka> seriously though, cataloging benchmark results is a pretty useful thing
<_death> yes.. and you can run a benchmark with a different tag, so you can tell a bit about the context in which it was run
<shka> ideally, i would prefer to have commit hash, but date is also completely fine
Alfr has joined #commonlisp
<shka> if i have a benchmark that will run for several minutes, will it overflow in the sqlite?
<_death> e.g., today I replaced a list with a priority queue, so I made my change and tagged the benchmark run with say :pileup
<_death> shka: no?.. I think INTEGER is 64-bit
<shka> right
<shka> i am not sure actually
<_death> also, currently it's sbcl-only because there's no TIME-LIST ;)
<_death> well, INTEGER is a kind of variable-length int up to 64-bit
<shka> i will gonna check it out tomorrow
<shka> or at least i hope to do so
<shka> thanks for sharing!
<_death> have fun ;)
<_death> also atm define-benchmark has no way to delimit the actual code that needs to be timed.. so it may change soon
<gendl> _death: is that a clim interface I'm looking at?
<_death> yes
waleee has joined #commonlisp
waleee has quit [Ping timeout: 240 seconds]
aeth has quit [Ping timeout: 256 seconds]
aeth has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
krjst has quit [Quit: bye]
krjst has joined #commonlisp
silasfox has quit [Quit: WeeChat 3.2]
rogersm has joined #commonlisp
<Josh_2> 'ello 'ello
<beach> Hey Josh_2.
<beach> Still working hard I take it?
<Josh_2> Yep, although I got a new puppy yesterday, so bit intermittent atm
<beach> Heh, I see.
<jcowan> Note that the conformance of ALTER TABlE across different DBMSes is very inconsistent
fengshaun has quit [Quit: bibi!]
fengshaun has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
Cymew has quit [Ping timeout: 265 seconds]
varjag has joined #commonlisp
jasom has quit [Ping timeout: 272 seconds]
jasom has joined #commonlisp
cage has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
frgo has quit [Ping timeout: 256 seconds]
lisp123 has joined #commonlisp
lad has joined #commonlisp
lisp123 has quit [Ping timeout: 258 seconds]
jasom has quit [Ping timeout: 252 seconds]
jasom has joined #commonlisp
bpanthi977 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
peterhil has quit [Ping timeout: 240 seconds]
selwyn_ has joined #commonlisp
selwyn has quit [Ping timeout: 265 seconds]
tyson2 has joined #commonlisp
selwyn_ has quit [Read error: Connection reset by peer]
waleee has joined #commonlisp
waleee has quit [Client Quit]
waleee has joined #commonlisp
peterhil has joined #commonlisp
livoreno has quit [Read error: Connection reset by peer]
livoreno has joined #commonlisp
bpanthi977 has quit [Quit: bpanthi977]
frgo has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
akoana has joined #commonlisp
waleee has quit [Ping timeout: 256 seconds]
lisp123 has joined #commonlisp
frgo has quit [Remote host closed the connection]
dlowe has quit [Ping timeout: 268 seconds]
lisp123 has quit [Ping timeout: 272 seconds]
davep has quit [Quit: Connection closed for inactivity]
yitzi has quit [Quit: Leaving]
Inline has joined #commonlisp
tyson2 has quit [Ping timeout: 272 seconds]
rogersm has quit [Quit: Leaving...]
derelict has quit [Ping timeout: 256 seconds]
jeosol has quit [Remote host closed the connection]
tyson2 has joined #commonlisp
frgo has joined #commonlisp
frgo has quit [Remote host closed the connection]
tyson2` has joined #commonlisp
shka has quit [Ping timeout: 265 seconds]
derelict has joined #commonlisp
tyson2 has quit [Ping timeout: 265 seconds]
selwyn has joined #commonlisp
<contrapunctus> ohai
<contrapunctus> Is there an Emacs command to show all occurrences of symbols from a specific package in a buffer?
treflip has quit [Quit: good night]
<contrapunctus> e.g. I want to see how a program is using a given library.
lad has quit [Remote host closed the connection]
waleee has joined #commonlisp
<Bike> emacs doesn't really know about symbols and packages. due to :use it's not always clear what symbola package belongs to until the code is actually loaded
<contrapunctus> "what * package a symbol belongs to" ?
<contrapunctus> hm... 🤔️
<Bike> say you have a file with (in-package #:mypackage) on top, and (define-constant ...) in it somewhere
<Bike> define-constant could be in mypackage, or it could be in some package mypackage uses (e.g. alexandria), and this isn't apparent until the package is actually around
<contrapunctus> mmhm
scymtym has quit [Ping timeout: 240 seconds]
jeosol has joined #commonlisp
sm2n has quit [Read error: Connection reset by peer]
sm2n has joined #commonlisp
unyu has quit [Ping timeout: 268 seconds]
unyu has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 265 seconds]
scymtym has joined #commonlisp
lotuseater has quit [Quit: ERC (IRC client for Emacs 27.2)]
selwyn has quit [Read error: Connection reset by peer]
<pjb> contrapunctus: you can write a little CL program to read a source file and collect the symbols.
<pjb> contrapunctus: (delete-duplicates (delete-if-not (function symbolp) (flatten (sexp-list-file-contents "~/src/public/hw/hw.lisp")))) #| --> (defpackage :use :export :documentation in-package &optional *standard-output* format finish-output out values defun main &rest declare ignore pname arguments hw) |#
<contrapunctus> pjb: hehe, one of those famous pjb Lisp one-liners coming up?
<contrapunctus> a-ha!
<contrapunctus> pjb: thanks xD
<pjb> then you can filter on symbol-package.
<pjb> contrapunctus: however, note that reading a source file is dependent on evaluating parts of that source file (read-time stuff). So it works better if you have already loaded it. (but it may still fail).
<pjb> or even macros. There are macros that re-intern their arguments in a different package. Sometimes even with a different case. And reading doesn't give you all the symbols, since macros can intern more symbols.
tyson2` has quit [Ping timeout: 265 seconds]
dsk has quit [Ping timeout: 240 seconds]
selwyn has joined #commonlisp
karlosz has joined #commonlisp
livoreno has quit [Ping timeout: 272 seconds]
livoreno has joined #commonlisp
frgo has joined #commonlisp
frgo has quit [Ping timeout: 240 seconds]
kakuhen has joined #commonlisp
tyson2 has joined #commonlisp
frgo has joined #commonlisp
Mrtn[m] has quit [Write error: Connection reset by peer]
loke[m] has quit [Read error: Connection reset by peer]
luis` has quit [Remote host closed the connection]
etimmons has quit [Remote host closed the connection]
dieggsy has quit [Write error: Connection reset by peer]
Gnuxie has quit [Write error: Connection reset by peer]
akanouras has quit [Remote host closed the connection]
katco has quit [Write error: Broken pipe]
frgo has quit [Ping timeout: 240 seconds]
loke[m] has joined #commonlisp
Gnuxie has joined #commonlisp
akanouras has joined #commonlisp
Mrtn[m] has joined #commonlisp
dieggsy has joined #commonlisp
etimmons has joined #commonlisp
katco has joined #commonlisp
luis` has joined #commonlisp
Inline has quit [Quit: Leaving]
attila_lendvai has quit [Ping timeout: 272 seconds]
lisp123 has joined #commonlisp
akoana has quit [Quit: leaving]
lisp123 has quit [Ping timeout: 258 seconds]
frgo has joined #commonlisp
pve has quit [Quit: leaving]
frgo has quit [Ping timeout: 240 seconds]
varjag has quit [Ping timeout: 258 seconds]
cjb has joined #commonlisp
luna-is-here has quit [Remote host closed the connection]
[deleted] has quit [Ping timeout: 272 seconds]
luna-is-here has joined #commonlisp
Lycurgus has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
amb007 has joined #commonlisp
ec has quit [Ping timeout: 244 seconds]
ec has joined #commonlisp
taiju has quit [Ping timeout: 256 seconds]
ghard has quit [Ping timeout: 246 seconds]
taiju has joined #commonlisp
lacedaemon is now known as fe[nl]ix
Alfr has quit [Killed (molybdenum.libera.chat (Nickname regained by services))]
Alfr has joined #commonlisp
beegs has quit [Ping timeout: 240 seconds]
beegs has joined #commonlisp
selwyn has quit [Read error: Connection reset by peer]
MichaelRaskin has quit [Ping timeout: 252 seconds]