p_l changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | ASDF 3.3.4
avalos has joined #lisp
karlosz has quit [Ping timeout: 260 seconds]
jeosol has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
nicktick has joined #lisp
ukari has quit [Ping timeout: 240 seconds]
terpri_ has joined #lisp
ukari has joined #lisp
akoana has left #lisp ["Leaving"]
terpri__ has quit [Ping timeout: 260 seconds]
terpri_ is now known as terpri
wxie has joined #lisp
nicktick has quit [Ping timeout: 256 seconds]
nicktick has joined #lisp
nicktick has quit [Quit: Leaving.]
johntalent has joined #lisp
nicktick has joined #lisp
nicktick has quit [Remote host closed the connection]
nicktick has joined #lisp
bitmapper has quit [Ping timeout: 240 seconds]
wxie has quit [Remote host closed the connection]
vornth has quit [Ping timeout: 240 seconds]
Josh_2 has quit [Ping timeout: 272 seconds]
nicktick1 has joined #lisp
nicktick has quit [Remote host closed the connection]
ahungry has joined #lisp
karlosz has joined #lisp
nicktick1 has quit [Ping timeout: 240 seconds]
gioyik has joined #lisp
rumbler31 has joined #lisp
avalos has quit [Ping timeout: 258 seconds]
xrash has quit [Ping timeout: 264 seconds]
xrash has joined #lisp
terpri_ has joined #lisp
avalos has joined #lisp
terpri has quit [Ping timeout: 260 seconds]
ukari has quit [Ping timeout: 264 seconds]
ukari has joined #lisp
thecoffemaker has quit [Ping timeout: 272 seconds]
thecoffemaker has joined #lisp
nicktick has joined #lisp
jesse1010 has quit [Ping timeout: 240 seconds]
Bike has quit [Quit: leaving]
wsinatra has quit [Quit: WeeChat 2.8]
kmeow has quit [Ping timeout: 260 seconds]
satousan has joined #lisp
johntalent has quit [Quit: leaving]
avalos has quit [Ping timeout: 246 seconds]
gaqwas has quit [Ping timeout: 246 seconds]
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
countvajhula has quit [Ping timeout: 260 seconds]
luis has quit [Ping timeout: 256 seconds]
avalos has joined #lisp
ukari has quit [Ping timeout: 258 seconds]
ukari has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
<v3ga> Does anyone here use sly with emacs? I'm fairly familiar with emacs as my daily driver. Slime starts with no problem but after installing the sly package emacs doesn't seem to recognize it at all. M-x sly (sly doesn't exist even though i've installed and deleted, reinstalled several times)
mathrick has quit [Ping timeout: 256 seconds]
countvajhula has joined #lisp
<beach> Good morning everyone!
<v3ga> hola
<loke> v3ga: No. I never understood why anyone would use sly (which has less features than SLIME)
<v3ga> loke: oh? i read that it had more. if I can ignore just stick with slime then that's fine
<v3ga> ok, well that solves that
<beach> scymtym: Wow, nice work with type 2 fonts!
<beach> phoe: Eclector is more the work of scymtym these days.
nicktick has quit [Ping timeout: 256 seconds]
luis has joined #lisp
nabataeus has quit [Remote host closed the connection]
nabataeus has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
shangul has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
<loke> v3ga: The main missing feature of Sly is that it doesn't support presentations. That's crazy to me, as it's one of th emost useful features of SLIME.
<v3ga> loke: hmm, well slime it is. I'd actually never heard of Sly until a few days ago and in my readings they were making it sound like it was SLIME with additional features. I'm already turned off by the installation process so SLIME is fine
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
ukari has quit [Ping timeout: 258 seconds]
ukari has joined #lisp
CrazyEddy has quit [Ping timeout: 260 seconds]
rumbler31 has quit [Ping timeout: 260 seconds]
CrazyEddy has joined #lisp
kmeow has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
ggole has joined #lisp
nabataeus has quit [Read error: Connection reset by peer]
narimiran has joined #lisp
nabataeus has joined #lisp
wooden has joined #lisp
wooden has quit [Changing host]
wooden has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
ukari has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
ukari has joined #lisp
toorevitimirp has quit [Ping timeout: 264 seconds]
dominic34 has quit [Ping timeout: 264 seconds]
gravicappa has joined #lisp
wxie has joined #lisp
ukari has quit [Ping timeout: 258 seconds]
ukari has joined #lisp
wxie1 has joined #lisp
wxie has quit [Read error: Connection reset by peer]
wxie1 is now known as wxie
ukari has quit [Ping timeout: 256 seconds]
ukari has joined #lisp
karlosz has quit [Remote host closed the connection]
Oladon has joined #lisp
ukari has quit [Ping timeout: 264 seconds]
wxie has quit [Ping timeout: 246 seconds]
ukari has joined #lisp
wxie1 has joined #lisp
gioyik has quit [Quit: WeeChat 2.8]
wxie1 is now known as wxie
nabataeus has quit [Read error: Connection reset by peer]
jprajzne has quit [Quit: jprajzne]
torbo has quit [Remote host closed the connection]
mathrick has joined #lisp
avalos has quit [Ping timeout: 256 seconds]
ahungry has quit [Remote host closed the connection]
shka_ has joined #lisp
ukari has quit [Ping timeout: 265 seconds]
<v3ga> sbcl is much lighter than clojure/jvm isn't it?
ukari has joined #lisp
seok has joined #lisp
Oladon has quit [Quit: Leaving.]
<seok> how hard would it be to build a regex search engine for data stored in file system?
<minion> seok, memo from DGASAU: modern "traditional" DBMSes create indices for all columns with sufficient constraints upfront, plus they typically gather statistics on queries and adapt query execution plans accordingly. This alone typically makes SQL-based applications (in long-run use case) perform significantly better than those with manual in-memory joins and manual performance tweaks.
<minion> seok, memo from DGASAU: also, for the reference, there was a paper from Google that summarized all their story behind "no-SQL" movement, when after more than 5 years pushing for "no SQL for performance" they admitted that in reality this doesn't actually pay off.
<flip214> seok: there's already cl-ppcre for Perl-compatible regular expressions. and reading files is also easy...
<seok> how would that scale for large datasets tho?
<seok> @dgasau thanks! this helps a lot
<flip214> seok: It's O(n) anyway... unless you're asking about creating an index for repeated querying, then I'd look at PgSQL first
<seok> yeah I guess pg would have better solution than O(n)
<seok> thx
nicktick has joined #lisp
mankaev has quit [Ping timeout: 256 seconds]
mankaev has joined #lisp
lerax has joined #lisp
ineiros has quit [Ping timeout: 240 seconds]
ukari has quit [Ping timeout: 265 seconds]
vegai has quit [Ping timeout: 256 seconds]
ukari has joined #lisp
nicktick has quit [Ping timeout: 246 seconds]
wxie has quit [Remote host closed the connection]
contrapunctus has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
pve has joined #lisp
mankaev has quit [Ping timeout: 256 seconds]
rgherdt has quit [Quit: Leaving]
ebrasca has joined #lisp
contrapunctus has joined #lisp
mankaev has joined #lisp
narimiran has quit [Ping timeout: 240 seconds]
rgherdt has joined #lisp
shangul has quit [Read error: Connection reset by peer]
ukari has quit [Ping timeout: 240 seconds]
contrapunctus has left #lisp ["Disconnected: closed"]
ukari has joined #lisp
orivej has joined #lisp
svetlyak40wt has joined #lisp
nicktick has joined #lisp
ukari has quit [Ping timeout: 264 seconds]
ukari has joined #lisp
ljavorsk has joined #lisp
__jrjsmrtn__ has joined #lisp
nicktick has quit [Ping timeout: 240 seconds]
edgar-rft has joined #lisp
_jrjsmrtn has quit [Ping timeout: 264 seconds]
countvaj` has joined #lisp
ukari has quit [Ping timeout: 260 seconds]
mankaev has quit [Read error: Connection reset by peer]
countvajhula has quit [Ping timeout: 260 seconds]
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
ukari has joined #lisp
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
mankaev has joined #lisp
ft has quit [Remote host closed the connection]
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
ukari has quit [Remote host closed the connection]
svetlyak40wt has quit [Ping timeout: 260 seconds]
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
ukari has joined #lisp
terpri__ has joined #lisp
terpri__ is now known as terpri
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
terpri_ has quit [Ping timeout: 260 seconds]
countvaj` has quit [Ping timeout: 260 seconds]
countvaj` has joined #lisp
ukari has quit [Ping timeout: 260 seconds]
ukari has joined #lisp
libertyprime has joined #lisp
countvaj` has quit [Ping timeout: 260 seconds]
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
luna_is_here has joined #lisp
ebrasca has quit [Remote host closed the connection]
gaqwas has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
contrapunctus has joined #lisp
xrash has quit [Ping timeout: 260 seconds]
<contrapunctus> How difficult would it be for someone to write cross-platform MIDI bindings for CL, if they have no knowledge of MIDI or C? 🤔
countvaj` has joined #lisp
<flip214> which midi bindings?
<flip214> parsing midi files? I did that ~10 years ago or so
<phoe> doesn't such a thing already exist somewhere?
heisig has joined #lisp
countvaj` has quit [Ping timeout: 256 seconds]
<contrapunctus> flip214: MIDI playback
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
reggie_ has quit [Read error: Connection reset by peer]
<contrapunctus> phoe: I didn't see anything on awesome-cl, but ISTR being surprised to see that RtMIDI had CL bindings too.
<flip214> isn't MIDI playback (to hardware) just pushing to a serial port?
<flip214> or locally running a program to render the sounds
<flip214> I guess I just don't understand what you want to achieve
<contrapunctus> Send MIDI to (software or hardware) samplers/recorders etc.
mankaev has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
reggie_ has joined #lisp
contrapunctus has joined #lisp
Krystof has quit [Ping timeout: 260 seconds]
countvaj` has joined #lisp
nicktick has joined #lisp
<beach> contrapunctus: MIDI playback is trivial as flip214 points out.
<beach> contrapunctus: I think you should start such a suite of programs.
countvaj` has quit [Ping timeout: 260 seconds]
<beach> contrapunctus: Are you planning to create a GUI as well for some parts of it?
<beach> contrapunctus: If so, I recommend using McCLIM.
nicktick has quit [Ping timeout: 240 seconds]
<contrapunctus> beach, flip214: does 'just pushing to a serial port' also work for sending MIDI to software?
<contrapunctus> beach: yeah, I want to make a GUI...and I'm interested in McCLIM 🙂
<beach> It depends on how the software wants the MIDI events. Since MIDI is real-time, there is no information about on/off times, so software must add that. MIDIfile is one representation that adds such information. I would think most software would recognize that format.
ukari has quit [Remote host closed the connection]
mankaev has joined #lisp
ukari has joined #lisp
lavaflow has quit [Ping timeout: 258 seconds]
<luna_is_here> contrapunctus: You could take a look at PortMidi library. As far as I remember it also had the possibility to create virtual midi devices that you could use to send midi to software. The API is not too complex so it would be easy to create a CL wrapper.
<beach> I think it would be much more interesting to see a pure Common Lisp solution.
<luna_is_here> I'm not sure about the virtual device part.
<luna_is_here> Maybe I am confusing something here...
ayuce has joined #lisp
<luna_is_here> beach: Yeah. But if you want to send midi to hardware, you need to use the OS's interface (unless you are using DOS), meaning you have to create wrappers for every OS that you want to run on.
iissaacc has joined #lisp
<contrapunctus> luna_is_here: oh, bugger, that's why I couldn't find it - it was PortMidi, not RtMIDI 😅 thanks for reminding me. Lisp bindings! https://sourceforge.net/p/portmedia/code/HEAD/tree/portmidi/trunk/pm_cl/
countvaj` has joined #lisp
<jackdaniel> I think that there is a difference between using bindings to a library and using bindings to interface with the os
<beach> I agree with jackdaniel.
ukari has quit [Ping timeout: 260 seconds]
nicktick has joined #lisp
<luna_is_here> contrapunctus: :D The problem is, that RtMidi is the library that has the virtual midi device... Not PortMidi :(
<luna_is_here> contrapunctus: If that is an important feature...
<jackdaniel> I remember once (as a joke) I've made a linux kernel driver to play rttl mario bros melody on a buzzer
<contrapunctus> But while sending MIDI to hardware would be nice, sending it to other software is more important for me 😶
<contrapunctus> luna_is_here: what's a virtual MIDI device? 😶 (I really don't know anything about MIDI, except as a user...)
<phoe> it's a program that accepts MIDI commands and can send MIDI commands, just like a physical MIDI device that is connected to a computer through a cable
<luna_is_here> contrapunctus: If you want to send MIDI to, let's say, a DAW, then the DAW will look for a MIDI device to read and write data from and to. Hence, if you want to send midi to a software, most of the time, you get there by emulating a midi device.
ukari has joined #lisp
<luna_is_here> Just because most software will just ask the OS for the midi devices available, and use those.
countvaj` has quit [Ping timeout: 260 seconds]
<luna_is_here> Depending on what you plan exactly, you can also write a VST, LV2 or AU plugin. That could be possible with ECL.
<contrapunctus> Oh. So I need to either make bindings for RtMIDI or Rewrite It In Lisp? 😶
<luna_is_here> From looking at the documentation, I fear that PortMidi does not allow for the creation of virtual midi device. So if that is what you want, then I assume: yes.
stepnem has quit [Ping timeout: 272 seconds]
stepnem has joined #lisp
<luna_is_here> Otherwise you could use loopMIDI on Windows. (I do not know if there is something similar for other OS's)
<beach> Are there still people using Windows?
<luna_is_here> :D
<phoe> beach: there sadly are
<beach> Wow!
<contrapunctus> 😄
<contrapunctus> So how would I go about making Lisp bindings for a C++ library? Didn't get any relevant results.
<phoe> you're up for a world of pain
* beach just lost interest in this project.
<phoe> the standard way is to create a C interface in between, compile that, and interface Lisp with it
<contrapunctus> Yow.
<phoe> doing it with raw C++ is insanity e.g. because of the way it does name mangling
<phoe> or use Clasp which compiles Lisp with C++ code
<phoe> basically, C++ is a horrible abomination to interface with
<contrapunctus> phoe: but that would mean it wouldn't be implementation portable 🙁
<phoe> contrapunctus: what do you mean, implementation portable?
<phoe> you mean a Lisp implementation or a C++ implementation
<phoe> Lisp is not a problem because you have CFFI which is a portability library
<phoe> C++ is not a problem when you have C, because C names are not mangled
<contrapunctus> I mean, then I'd be stuck with Clasp and someone using e.g. SBCL wouldn't be able to use the library.
<phoe> obviously
<phoe> Clasp-compiling C++ with Lisp won't work with other implementations.
jesse1010 has joined #lisp
<phoe> so a C mediation layer is one of the two options I'd consider for real, practical purposes
<contrapunctus> phoe: is there any resource I can study, for doing that?
<phoe> the other is going beach way and writing everything in Lisp and/or using or reviving some already existing Lisp software, which I don't think would be that hard
<beach> There is a lot of music software at IRCAM and they used Common Lisp a lot.
<phoe> ^
<beach> Maybe some of it is now open source.
<beach> Try OpenMusic for instance.
<contrapunctus> Whoa. That would mean studying so many MIDI APIs on so many platforms 😳
<phoe> what do you mean, many MIDI APIs on many platforms
<phoe> you can stick with just one if you're lucky
<phoe> also, once you understand MIDI as a protocol, you can implement it anywhere
<contrapunctus> (Although, well, probably still less work and more play than dealing with C/C++)
<phoe> I think that I agree with that
<phoe> almost everything is better than dealing with C++
<phoe> and when dealing with C++ is the only real viable option for your use case, you get insane^Wambitious projects like Clasp sprout into life
<contrapunctus> hehe
<phoe> but then again, that's because drmeister has truckloads of C++ science code that he needs to use from Lisp and at the same time cannot feasily rewrite in Lisp.
<luna_is_here> contrapunctus: RtMidi has a C API also.
<phoe> so tl;dr either use native Lisp software (which is greatly preferable and requires just a bit of software archaeology now and then), or bind against C foreign interfaces when native Lisp stuff is not available and not feasible to write
<contrapunctus> luna_is_here: ah, thanks for pointing that out. 🙂
<beach> contrapunctus: I suggest you look at OpenMusic. It is written in Common Lisp and it can be downloaded for Linux.
<beach> There are also versions for MacOS and Windows apparently.
frgo has joined #lisp
jeosol has quit [Remote host closed the connection]
countvaj` has joined #lisp
frgo_ has quit [Ping timeout: 246 seconds]
countvaj` has quit [Remote host closed the connection]
countvaj` has joined #lisp
countvaj` has quit [Ping timeout: 260 seconds]
nicktick has quit [Ping timeout: 265 seconds]
<contrapunctus> So many roads to choose from 😵
holycow has quit [Quit: Lost terminal]
mankaev has quit [Read error: Connection reset by peer]
mankaev has joined #lisp
ukari has quit [Ping timeout: 256 seconds]
ukari has joined #lisp
kmeow has quit [Ping timeout: 260 seconds]
rogersm has joined #lisp
wxie has joined #lisp
ukari has quit [Ping timeout: 260 seconds]
ukari has joined #lisp
rixard has quit []
<luna_is_here> Did SWIG not have CL support at one point?
<phoe> it did, v2; v3 removed it
<luna_is_here> Awww :/
vornth has joined #lisp
ukari has quit [Ping timeout: 256 seconds]
Lord_of_Life_ has joined #lisp
ukari has joined #lisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
countvaj` has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
ukari has quit [Ping timeout: 256 seconds]
countvaj` has quit [Ping timeout: 260 seconds]
<TMA> luna_is_here: I were attempting to resurrect it, but the amount of time my brain is capable to make progress is severely constrained by other more pressing tasks.
<TMA> I was, even
<luna_is_here> I see.
markoong has joined #lisp
wxie has quit [Ping timeout: 260 seconds]
vutral has joined #lisp
lerax` has joined #lisp
Achylles has joined #lisp
lerax has quit [Ping timeout: 272 seconds]
nabataeus has joined #lisp
random-nick has joined #lisp
markong has joined #lisp
markoong has quit [Ping timeout: 258 seconds]
lerax` has quit [Quit: ERC (IRC client for Emacs 26.3)]
terpri_ has joined #lisp
iissaacc has quit [Ping timeout: 246 seconds]
ljavorsk has quit [Ping timeout: 240 seconds]
ursuta has joined #lisp
ursuta has quit [Max SendQ exceeded]
terpri has quit [Ping timeout: 260 seconds]
* contrapunctus starts reading the CFFI tutorial
kaftejiman has joined #lisp
countvaj` has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
orivej_ has joined #lisp
simon108 has joined #lisp
countvaj` has quit [Ping timeout: 256 seconds]
<beach> Oh well.
mankaev has quit [Read error: Connection reset by peer]
<beach> I tried my best.
Achylles has quit [Remote host closed the connection]
mankaev has joined #lisp
narimiran has joined #lisp
toorevitimirp has joined #lisp
<contrapunctus> beach: I'll need that even if want to make a cross platform Lisp MIDI library...right? e.g. to interface with ALSA MIDI.
Bike has joined #lisp
<luna_is_here> contrapunctus: If you want to interface with hardware or software and not just write midi files, yes.
<contrapunctus> I suppose one could implement a new Lisp MIDI API too, but I don't know if that will be worth the required effort.
<contrapunctus> OpenMusic seems to use JUCE, so if they made a wrapper around that, maybe I could split it out into a project of its own.
<luna_is_here> Sounds possible.
rogersm has quit [Quit: Leaving...]
wsinatra has joined #lisp
<lukego> I'm rusty and not up to date on how the cool kids do control flow and data structures these days. what are some options for converting a two-dimensional array into a flat list?
X-Scale has quit [Ping timeout: 240 seconds]
<phoe> you mean a list of lists?
<phoe> or a list of all elements in row major order?
ayuce has quit [Remote host closed the connection]
<phoe> in the latter case, (loop with array = #2A((1 2 3) (4 5 6) (7 8 9)) for i below (array-total-size array) collect (row-major-aref array i))
<lukego> the latter. Or I'd settle for just a way to iterate through all items
toorevitimirp has quit [Ping timeout: 260 seconds]
<lukego> oh that is neat!
satousan has quit [Quit: WeeChat 2.3]
<phoe> gods bless ROW-MAJOR-AREF
<lukego> I don't think I've really used multidimensional arrays in lisp before. I was surprised and delighted to see the reader syntax for literals.
<jackdaniel> conformally displaced row-major-aref winks from the depths of hell
countvaj` has joined #lisp
<_death> (coerce (make-array (array-total-size array) :displaced-to 2d-array) 'list)
<phoe> _death: also nice
X-Scale` has joined #lisp
<lukego> I've done so much Lua lately that I catch myself thinking that ARRAY-TOTAL-SIZE should be expensive since checking the size of each row takes O(log n) time to binary search for the last populated element..
<lukego> (not that it would matter now anyway)
<_death> you may also need to supply the element-type
countvaj` has quit [Ping timeout: 260 seconds]
nicktick has joined #lisp
__jrjsmrtn__ has quit [Ping timeout: 240 seconds]
toorevitimirp has joined #lisp
__jrjsmrtn__ has joined #lisp
vaporatorius__ has quit [Quit: Leaving]
vutral has quit [Quit: Connection closed for inactivity]
vaporatorius has joined #lisp
vaporatorius has quit [Changing host]
vaporatorius has joined #lisp
ebrasca has joined #lisp
toorevitimirp has quit [Ping timeout: 260 seconds]
ayuce has joined #lisp
<lukego> I'd like to generate some randomized test data. Ideally starting with simple examples and gradually becoming more complex. Basically like in a property-based testing framework. Any recommendations?
<phoe> screamer comes to mind, but it solves a slightly different problem
l1x has quit []
l1x has joined #lisp
<_death> fiveam also has some random testing support
jw4 has quit [Read error: Connection reset by peer]
<lukego> check-it code looks really nice to me at first glance. heavy on a pattern matching library called OPTIMA that looks nifty too
<lukego> seems like the generators can be used independently of the testing framework (but I'll probably want that later)
jw4 has joined #lisp
mjl has quit []
mjl has joined #lisp
<lukego> hm but being part of an automated test framework there maybe aren't the right knobs for generators. Seems like the random sampling takes a uniform value up to a size limit, whereas I'd probably like some other random distributions e.g. log transform to bias towards small values while still permitting bigger ones. maybe can put that into the framework. reads...
<jmercouris> OPTIMA is not nifty, not in my opinion
<jmercouris> I don't like pattern matching libraries
<jmercouris> cryptic syntax
<jmercouris> it is not so verbose to write (equal x y) is it?
<jackdaniel> that's not what pattern matching is for
<jmercouris> that's what is often used for
<jackdaniel> by whom? ,)
<lukego> check-it source is really easy to read with the patterns, for me at least who's worked in patterny languages sometimes in the past (otherwise surely cognitive overhead)
<lukego> guess it's also one of those things where if you're doing pattern matching you'll tend to choose basic data structures to suit
EvW has joined #lisp
rumbler31 has joined #lisp
splittist has quit []
splittist has joined #lisp
mankaev has quit [Read error: Connection reset by peer]
ahungry has joined #lisp
sjl_ has joined #lisp
mankaev has joined #lisp
Retropikzel has joined #lisp
bitmapper has joined #lisp
simon108 has left #lisp [#lisp]
tristero has joined #lisp
Josh_2 has joined #lisp
<Josh_2> Hi
<Josh_2> Wheres the best place to look for examples of the MOP in use?
narimiran has quit [Ping timeout: 240 seconds]
<Gnuxie[m]> what do you want to do with it?
<lukego> I feel dirty when I call SB-INT:COLLECT. Is there an obvious way to launder that e.g. via alexandria or something?
<phoe> lukego: uiop:while-collecting, unless you're allergic to uiop
<lukego> thanks!
<jackdaniel> uiop:while-collecting has a bug, I don't recall what exactly
<jackdaniel> but it goes belly up for some inputs
<Gnuxie[m]> Josh_2: Postmodern/Mito/json-mop have readable examples for slot classes and other basic use cases (but honestly h*ck ORM)
liberliver has quit [Quit: liberliver]
<jackdaniel> lukego: collect originates from cmucl, here is one of many utility copies: https://github.com/McCLIM/McCLIM/blob/master/Core/clim-basic/utils.lisp#L716
<phoe> the issue is that I don't know a commonly used library that includes this macro
<phoe> flip214: maybe alexandria2 would consider adding it?
<lukego> I'm actually fine with being non-portable it just feels icky to reference SB-INT in source code because it looks "internaley." Back when I used CMUCL I was more than happy to use EXT:COLLECT :)
<phoe> s/whole post/maybe you would consider adding it to alexandria2?/
<jackdaniel> lukego: just copy it to your utilities file and forget about the issue
<lukego> Or otherwise how would you convert alexandria's MAP-COMBINATIONS into a COMBINATIONS function that accumulates into a list?
<Josh_2> Gnuxie[m]: I'm not sure, I need to get a gist of what I can do with it before I can understand how I can apply it to current projects
<jackdaniel> the library "collectors" has somewhat similar equivalent
<Josh_2> I will check what you have suggested, thanks Gnuxie[m]
<lukego> jackdaniel: yeah fair enough. I did the next best/worst thing of updating my defpackage with (import-from #:sb-int #:collect)
<jackdaniel> that works too, sure
<lukego> I'm curious though how other people usually do "collecting" with "mapping" functions though? I mean for data that's not supported by loop accumulating keywords and doesn't provide a reduce-like accumulating version
* jackdaniel uses ext:collect on ecl and climi::collect in mcclim :)
<phoe> a LAMBDA over PUSH tends to save the day
<jackdaniel> don't forget about nreverse
<phoe> oh right, (let ((x '())) ... (lambda (y) (push y x)) ... (nreverse x)))
<lukego> ok yeah that's decent too but I'll stick with collect
<lukego> I have missed this about Lisp, curating one's own personal programming style :)
<beach> Don't take that possibility too far.
kmeow has joined #lisp
<phoe> "with great expressiveness comes great possibilty of making Lisp as readable as poorly golfed Perl"
<contrapunctus> lol
<lukego> shoe changing foot quickly :-) thought I was clever doing (collect ((comb)) (alexandria:map-combations #'comb list)) ...) but of course COMB is a not a function...
<lukego> not immediately obvious to me that COLLECT needs to use MACROLET instead of LABELS under the hood either...
<phoe> I think that FLET is enough though
<phoe> at least my lambda example up there has a single anonymous function for collecting stuff
<contrapunctus> beach: I had a look at the 'ancient CL version' of OpenMusic on GitHub...it seems to be GPL, whereas I prefer to Unlicense my work. 😔 I guess I'll look into wrapping the RtMIDI C API, which seems like the next most pragmatic route.
<phoe> ancient? https://github.com/openmusic-project/openmusic has a release from this year
<phoe> but that is GPL as well
<jackdaniel> the macro collect uses macrolet to allow having any collecting method, not only collect list
<lukego> collectors library looks nice but code doesn't seem to match implementation. (collecting (map-combinations #'collect list)) should do what I want but the macro doesn't parse those args
satousan has joined #lisp
ntr has quit [Remote host closed the connection]
lavaflow has joined #lisp
satousan has quit [Quit: WeeChat 2.3]
<contrapunctus> phoe: oh, I confused it with CommonMusic 🤦‍♀️
ntr has joined #lisp
<lukego> so my ultimate compromise for now is to take the nice COLLECTING interface from the COLLECTORS documentation, which isn't really supported by that library as installed from quicklisp, and port it onto the top of SB-INT:COLLECT. good enough for now. https://gist.github.com/lukego/1714405ba893250812bf522a1e4f1b97
heisig has quit [Ping timeout: 240 seconds]
<lukego> then you can (defun permutations (list) (collecting (map-permutations #'collect list))) which is a darling I haven't murdered yet :)
ffwacom has quit []
ffwacom has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
iissaacc has joined #lisp
boeg has quit []
boeg has joined #lisp
iissaacc has quit [Ping timeout: 240 seconds]
<lukego> So next naive question perhaps leading to a hot library tip: how would you compute the list of all subsets of the set LIST?
<phoe> wait a second
<phoe> LIST === (OR CONS NULL)
<phoe> that's when it comes to types
<phoe> what exactly do you want to do?
gioyik has joined #lisp
<jackdaniel> that's not a problem, the resulting list will have a nil as one of subsets
<lukego> (subsets (1 2 3)) => (() (1) (2) (3) (1 2) (1 3) (2 3) (1 2 3))
<lukego> I find myself writing a recursive function but it feels like this should exist and that makes me wonder if I'm missing another alexandria/uiop sort of library
<lukego> or simply doing an apropos search on the wrong keyword..
* lukego consults that awesome-lisp page again..
cosimone has joined #lisp
CrazyEddy has quit [Ping timeout: 246 seconds]
<jackdaniel> lukego: I have something
<jackdaniel> hang on
torbo has joined #lisp
<phoe> (let ((x '()) (list '(1 2 3 4 5))) (loop for i from 0 below (length list) do (alexandria:map-combinations (lambda (y) (push y x)) list :length i)) x)
<phoe> could also use DOTIMES instead of LOOP
<contrapunctus> Doesn't loop let you say 'with x'?
<phoe> oh right, it does
<jackdaniel> what phoe wrote is ~same what I had in mind
<pve> lukego: is that the powerset?
<phoe> pve: it is
<lukego> phoe: oh nice. I can combine that with my little NIH macro and have (collecting (dotimes (i (length list)) (map-combinations #'collect list :length i))) which is just fine
<lukego> thank you pve! I lacked that term and it's the right one
<pve> lukego: np
<lukego> I like this little collecting/collect pair from COLLECTORS interface because I'm not sure that I've ever actually had multiple collectors with COLLECT nor given a collector a useful name
<lukego> Jolly nice lisping with you all. nice weekend!
karlosz has joined #lisp
nabataeus has quit [Remote host closed the connection]
Josh_2 has quit [Ping timeout: 240 seconds]
<dlowe> Seems like you could make a list type if you could do (deftype my-list (or (cons my-type my-list) null))
<dlowe> *a nicer list type
EvW has quit [Ping timeout: 256 seconds]
<Bike> recursive types introduce complications into the system that i, at least, wouldn't know how to solve. for example under the usual recursive definition of subtype, #1=(cons t #1#), which i would understand as the type of infinite circular lists, is a subtype of the bottom type NIL
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
karlosz has quit [Client Quit]
karlosz has joined #lisp
karlosz has quit [Client Quit]
makomo has joined #lisp
avalos has joined #lisp
<frgo> Hi all: question: I need to copy a large (2GB) in 255 byte chunks into foreign memory using CFFI. Would I use something like https://github.com/jetmonk/waaf-cffi for this?
<frgo> s/large /large file /
<frgo> Or just cffi:with-foreign-pointer and loop ?
avalos has quit [Ping timeout: 256 seconds]
avalos has joined #lisp
<phoe> maybe try mmapping it instead
orivej_ has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
karlosz has joined #lisp
ebrasca has quit [Remote host closed the connection]
EvW has joined #lisp
whiteline has quit [Remote host closed the connection]
whiteline has joined #lisp
orivej has quit [Ping timeout: 265 seconds]
orivej has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
cosimone has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
karlosz has quit [Quit: karlosz]
dominic34 has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
karlosz has joined #lisp
<frgo> phoe: Yeah. But but but ... How to get that into foreign memory "easily"...
Josh_2 has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
edgar-rft has quit [Quit: Leaving]
technobean has joined #lisp
<phoe> frgo: mmap it and memcpy?
<frgo> phoe: Hmpf - yup. You are right - it's the simple things that sometimes are hard to find ... Thanks!
brown121407 has quit [Ping timeout: 260 seconds]
kaftejiman has quit [Remote host closed the connection]
orivej has quit [Quit: No Ping reply in 180 seconds.]
whiteline has quit [Ping timeout: 240 seconds]
choegusung has joined #lisp
orivej has joined #lisp
technobean has quit [Quit: Leaving]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
bocaneri has quit [Remote host closed the connection]
DGASAU has joined #lisp
choegusung has quit [Quit: leaving]
orivej has quit [Quit: No Ping reply in 180 seconds.]
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
orivej has joined #lisp
Krystof has joined #lisp
cosimone has quit [Quit: Quit.]
RagnarDanneskjol has quit []
RagnarDanneskjol has joined #lisp
<Josh_2> Do we have a 'seen' command in here?
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
makomo has quit [Quit: WeeChat 2.8]
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
<aeth> I think minion has a seen command? iirc
<aeth> Josh_2: I usually just use this though: https://irclog.tymoon.eu/freenode/%23lisp
<aeth> you can search "written by" and keep expanding the time interval until the person you are looking for has spoken, but keep in mind that it's rate limited to a very noticable length, maybe 5-10 seconds... https://irclog.tymoon.eu/search?channel=freenode%2F%23lisp
<aeth> There's no all-channel search, though, so a bot has the advantage that it might have seen someone on another channel who hasn't spoken here recently.
karlosz has quit [Quit: karlosz]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
dominic34 has quit [Ping timeout: 256 seconds]
akoana has joined #lisp
countvaj` has joined #lisp
xrash has joined #lisp
<Josh_2> pjb hasn't been around for a while
<Josh_2> or did he change his name?
ft has joined #lisp
whiteline has joined #lisp
dilated_dinosaur has quit [Ping timeout: 264 seconds]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
gaqwas has quit [Ping timeout: 258 seconds]
ayuce has quit [Remote host closed the connection]
ayuce has joined #lisp
<aeth> pjb was online recently, but hasn't said anything
dilated_dinosaur has joined #lisp
karayan has quit [Remote host closed the connection]
gravicappa has quit [Ping timeout: 256 seconds]
rgherdt has quit [Quit: Leaving]
gravicappa has joined #lisp
rgherdt has joined #lisp
karayan has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
aaaaaa has joined #lisp
iissaacc has joined #lisp
narimiran has joined #lisp
iissaacc has quit [Ping timeout: 260 seconds]
simon108 has joined #lisp
ahungry has quit [Remote host closed the connection]
<Josh_2> aeth: okay sweet
nullheroes has joined #lisp
ggole has quit [Quit: Leaving]
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
gioyik has quit [Quit: WeeChat 2.8]
gravicappa has quit [Ping timeout: 265 seconds]
karlosz has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
wsinatra has quit [Quit: WeeChat 2.8]
theseb has joined #lisp
hipete has joined #lisp
hipete has left #lisp [#lisp]
avalos has quit [Ping timeout: 240 seconds]
ahungry has joined #lisp
mgsk has quit []
mgsk has joined #lisp
terpri__ has joined #lisp
terpri_ has quit [Ping timeout: 260 seconds]
theseb has quit [Quit: Leaving]
cosimone has joined #lisp
ebrasca has joined #lisp
<seok> how do I call a function with variables in a list?
orivej has quit [Ping timeout: 265 seconds]
orivej_ has joined #lisp
<ebrasca> seok: Can you explain more what do you whant?
<jackdaniel> (apply function arg-list)
<Josh_2> Did Ravenpack fill that junior position in Marbella?
countvaj` has quit [Ping timeout: 260 seconds]
ahungry has quit [Remote host closed the connection]
<Gnuxie[m]> Josh_2: pjb got banned i think
avalos has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
orivej_ has quit [Read error: Connection reset by peer]
orivej has joined #lisp
<jackdaniel> he got unbanned few days later
mercourisj has joined #lisp
younder has joined #lisp
<Josh_2> banned in here??
<younder> not for the moment
simon108 has quit [Ping timeout: 245 seconds]
<younder> Truth be told I write drone software these days. Hardly any Lisp. I just hang around for old times sake.
<Josh_2> write drone software in Lisp :P
<mercourisj> anyone know of any Lisp applications for photo management?
orivej has quit [Ping timeout: 240 seconds]
<Josh_2> i'm looking back at some of the code I wrote over a year and trying to fix it up, It's dreadful oof
ayuce has quit [Remote host closed the connection]
<younder> The easiest way is use a shell language interface like the one provided by imagemagic. Shell out to that and it should provide what you need.
<mercourisj> that's good news Josh_2
<mercourisj> that means you are growing
terpri__ has quit [Ping timeout: 260 seconds]
<mercourisj> I'm talking about photo library management, browsing, viewing, sorting, etc
rumbler31 has quit [Ping timeout: 240 seconds]
* younder confesses to mosty use imagemagic from PHP..
<mercourisj> maybe a good candidate for a CLIM application
mercourisj has quit [Remote host closed the connection]
<younder> Image processing is a lot of work.. Hope you have a lot of friends ;)
<younder> A frontend to OpenCV might be a start.
<torbo> What's the best way to parse a string representation of a rational number (i.e. "3/4") into a rational number in CL?
<younder> read
<Bike> easiest is READ but it'll do bad things on malformed input. you could use POSITION to get the solidus, and then PARSE-INTEGER both sides.
<torbo> Great, thank you both!
narimiran has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
yonkunas has quit []
yonkunas has joined #lisp
libertyprime has quit [Ping timeout: 265 seconds]
countvaj` has joined #lisp
<jasom> there is also the library parse-number
<younder> Bike is a PhD. He writes robust code for industrial applications. I am guessing turbo isn't there yet.
<Bike> what the hell?
<younder> Bike a was a peripheral developer on you compiler
<younder> ^ O
<younder> ^ I
libertyprime has joined #lisp
shka_ has quit [Ping timeout: 258 seconds]
notzmv has quit [Ping timeout: 240 seconds]
<aeth> here? I remember pjb being banned from #scheme for a short while for only being there to promote CL... that might be what you're thinking of.
<Bike> as jackdaniel said, already, less than an hour ago, he was banned from here for a few days
<scymtym> i think people are referring to this: https://irclog.tymoon.eu/freenode/%23lisp?around=1592014365#1592014365
younder has left #lisp ["Leaving"]
younder has joined #lisp
avalos has quit [Ping timeout: 256 seconds]
<younder> I don't know by I have not been here. Left andforgotten and mostly irrelevant. If I say someting that sounds like misinformation, please let me know.
jason_m has quit [Remote host closed the connection]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
shka_ has joined #lisp
younder has quit [Quit: Leaving]
younder has joined #lisp
EvW1 has joined #lisp
<Josh_2> seems like a petty ban
<Josh_2> This community is pretty small, last thing needed is isolating individuals over petty stuff like being abrasive
<White_Flame> there's a difference between being abrasive and being intentionally obtuse, screaming that everybody's correct and applicable answers are absolutely wrong in expletive laden screeds
<Josh_2> Hey, that's just pjb xD
shka_ has quit [Ping timeout: 258 seconds]
<Josh_2> I started here when I was basically 100% new to programming and I got that impression from him pretty early, I still appreciate the walls of text to this day
markoong has joined #lisp
markong has quit [Ping timeout: 240 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
sz0 has joined #lisp
<younder> White_Flame, sounds like a bot
orivej has quit [Ping timeout: 240 seconds]
seok has quit [Remote host closed the connection]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life_ is now known as Lord_of_Life
random-nick has quit [Ping timeout: 246 seconds]
<dlowe> It's *more* important in a small community to boot people who spread bullshit.
johntalent has joined #lisp
jesse1010 has quit [Quit: Leaving]
edgar-rft has joined #lisp
sjl_ has quit [Ping timeout: 264 seconds]
karlosz has quit [Quit: karlosz]
<stylewarning> dlowe: CL:BULLSHIT isn’t a part of ANSI Common Lisp. *DEFAULT-BULLSHIT-DEFAULTS* may have bullshit or other components of bullshit, though.
<aeth> pjb gives particularly bad advice on IRC when the question is about the type system ime... His advice is consistently to never check types and just let things fail at the point where they fail, but ime that just leads to a random NIL showing up 20 functions away from where it was generated and a waste of a day.
<torbo> jasom: Thanks!
libertyprime has quit [Quit: leaving]
<johntalent> How would it be possible to use ABCL with The Godot Game Engine?
<aeth> ABCL is Java-based and not very popular, at least on IRC, so you would probably have better odds with ECL, which is designed to be embedded in C applications.
cosimone has quit [Ping timeout: 256 seconds]
pve has quit [Quit: leaving]
<aeth> johntalent: It looks like all other (not GDScript, VisualScript, or C#) languages are supposed to interface through the GDNative C++ bindings. https://docs.godotengine.org/en/stable/getting_started/step_by_step/scripting.html#gdnative-c
<aeth> ECL or even Clasp (the latter is a work-in-progress) seems like it would be a lot less painful than trying to bring in the entirety of the Java environment
ebrasca has quit [Remote host closed the connection]
<aeth> johntalent: I found one result: https://github.com/borodust/bodge-godot
<borodust> aeth johntalent: i guess i need to add a warning there or smth - those bindings are highly experimental - i never used them it was just an experiment to see how hard it would be to generate bindings for godot
<borodust> it was easy to, but i didn't go any further, so those might actually not work ;p