<pjb>
Your dictionary can also have some smarts, (dictionary-find-word *deutsch-woerter* "Häuser") -> #<word "Haus" :plural :nominative>
<pjb>
The point is that LIST is not a high level linguistic operator.
loli has joined #lisp
<paule32>
that not the problem
<paule32>
the problem is the data storage
<paule32>
i could use a input cli
<pjb>
DICTIONARY-FIND-WORD could be a high level linguistic operator. (word-case (make-word "Häuser")) -> :nominative can be a high level linguistic operation.
<pjb>
paule32: data storage is no problem. Forget it.
<paule32>
search for the words in list (is in range - or so
<pjb>
Use abstractions.
<pjb>
Implement linguistic abstractions, using the lisp abstractions provided in CL.
<pjb>
(read the hyperspec dictionaries).
<ThomasLewis[m]>
I would use a word class and a dictionary class with a hash table keyed to the word with the values being instances of word.
<pjb>
for example. It doesn't matter what you use. What matters is what abstraction you're designing and using.
<ThomasLewis[m]>
You could even make the slots containing the hash tables indexed by letter, type, or whatever.
<pjb>
Once you've defined an abstraction, you can change its implementation at will, therefore it doesn't matter if you use a a-list, a hash-table or noodles.
robdog has joined #lisp
nirved is now known as Guest54345
Guest54345 has quit [Killed (niven.freenode.net (Nickname regained by services))]
<paule32>
i need a function, that returns true or the wort2 , if it is in list of noun-list
<Josh_2>
find?
<Josh_2>
member?
<no-defun-allowed>
member for lists, find for sequences, position for sequences if you want the index
<pjb>
paule32: we cannot help you, you don't take your comments into account.
didi has joined #lisp
<didi>
I don't know I'm disappointed by TYPECASE macroexpasion. I guess I was expecting something more obscure than a COND with a bunch of (typep ...) clauses.
<didi>
s/know/know why
undiscovered has quit [Quit: WeeChat 2.3]
<pillton>
Are your types complicated?
<paule32>
can "search" find "list" strings ? in form of: (list "Apple" "Mapple" "Zappel")
<no-defun-allowed>
pretty sure with SBCL and typecase it's still boring
<no-defun-allowed>
:key #'string=
<didi>
pillton: I don't think so. I strictly used type so I could use some kind of compiler magic or whatever. Oh well.
<pillton>
What magic where you expecting?
<pillton>
s/where/were/
<didi>
pillton: I don't know. Some SB-INT::* stuff, I guess.
<pillton>
I'm sure the applications of typep will get transformed in to that during compilation.
<gendl>
If you make the browser window very long, you get a horizontal scrollbar, and I can't see why (but that's really more of a web dev question not a lisp question.. just putting it out here in case the spirit moves anyone to look at it.)
loli has joined #lisp
Oladon has joined #lisp
gravicappa has joined #lisp
robdog_ has joined #lisp
slac-in-the-box has quit [Remote host closed the connection]
robdog_ has quit [Ping timeout: 250 seconds]
ggole has joined #lisp
robdog has joined #lisp
jack_rabbit has joined #lisp
robdog has quit [Read error: Connection reset by peer]
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
robdog_ has joined #lisp
dddddd has quit [Read error: Connection reset by peer]
Vilivikhorith has quit [Quit: Using Circe, the loveliest of all IRC clients]
DGASAU has quit [Remote host closed the connection]
DGASAU has joined #lisp
Oladon has quit [Quit: Leaving.]
loli has joined #lisp
torbo has quit [Remote host closed the connection]
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
Bicyclidine has quit [Quit: Lost terminal]
<beach>
Good morning everyone!
Josh_2 has quit [Remote host closed the connection]
Necktwi has quit [Ping timeout: 258 seconds]
notzmv has quit [Ping timeout: 246 seconds]
Necktwi has joined #lisp
robdog has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
fckit has quit [Ping timeout: 240 seconds]
robdog has quit [Ping timeout: 264 seconds]
anewuser has quit [Quit: anewuser]
robdog has joined #lisp
<LdBeth>
good evening
<no-defun-allowed>
Should DEFTYPE work in dispatched types in DEFMETHOD?
robdog has quit [Ping timeout: 250 seconds]
<no-defun-allowed>
I have a type, (deftype foo:true () '(eql t)), but I cannot get DEFMETHOD to dispatch on it, and SBCL gives me a warning `Cannot find type for specializer FOO:TRUE when executing SB-PCL:SPECIALIZER-TYPE-SPECIFIER for a STANDARD-METHOD of a STANDARD-GENERIC-FUNCTION.`
<ggole>
defmethod dispatches on class or eql, not arbitrary type
<beach>
paule32: Please use a pastebin site.
<no-defun-allowed>
That's a shame. I will have to add a rewriting term to my program then when it generates a DEFMETHOD.
<beach>
paule32: Also, please use #clschool. Your questions are still at a very basic level after many years. And there is no reason to believe that they will improve.
<ggole>
CL types are rather expressive, so dispatch on them would be quite tricky
robdog has joined #lisp
robdog has quit [Ping timeout: 258 seconds]
<LdBeth>
although (eql #.(find-class 'standard-class)) is valid
loli has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
aindilis has quit [Read error: Connection reset by peer]
robdog has quit [Ping timeout: 250 seconds]
hiroaki has quit [Ping timeout: 268 seconds]
igemnace has quit [Quit: WeeChat 2.3]
loli has joined #lisp
aindilis has joined #lisp
alex-dev has joined #lisp
robdog has joined #lisp
sauvin has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
alex-dev has quit [Quit: Konversation terminated!]
lavaflow has quit [Read error: Connection reset by peer]
<fiddlerwoaroof>
Lispworks will signal a condition like "Error: The type specifier (FUNCTION (STRING) BOOLEAN) cannot be used for discrimination." when using a function type as a slot type
Elephant454 has quit [Ping timeout: 268 seconds]
<fiddlerwoaroof>
(the error happens when SETFing the slot, not at struct definition time
lavaflow has joined #lisp
<fiddlerwoaroof>
I think this maybe be fixed in more recent versions (I put in a support request and got a patch) but the Support person mentioned that the standard says that the slot type should be checked, which is impossible for function types
<fiddlerwoaroof>
Although, I guess at high safety levels, you could transparently wrap the SETFed function with a function that checks the arg types and the return type
orivej has joined #lisp
<pillton>
fiddlerwoaroof: Function types don't do what you think they do.
<fiddlerwoaroof>
I didn't think they did anything :)
<fiddlerwoaroof>
I was just trying to install something from QL and got an error, that I solved by removing the slot type definition
<fiddlerwoaroof>
Then, when I put in a ticket with Lispworks, the sales rep mentioned that the standard for defstruct seems to imply that type is checked... which he claimed to be impossibe
<pillton>
They are only useful for compiler declarations. You cannot use them to test if a closure accepts arguments according to a given function type.
<pillton>
I think Bike has looked in to using them for discrimination. I think he concluded that function types are a lost cause.
<fiddlerwoaroof>
Yeah, I assumed something like that
robdog has joined #lisp
<fiddlerwoaroof>
Couldn't you dynamically replace a lambda with a lambda that does something like (check-type (old-lambda (check-type arg1 type1)) 'return-type), though?
<fiddlerwoaroof>
i.e. treat the type as a contract to be enforced at run time, rather than as a static type declaration
Inline has quit [Quit: Leaving]
actuallybatman has joined #lisp
matijja has joined #lisp
ebrasca has joined #lisp
zmt01 has joined #lisp
<ggole>
Racket (or at least, some of its sublanguages) does that sort of thing
<ggole>
It gets fairly expensive
robdog_ has joined #lisp
zmt00 has quit [Ping timeout: 250 seconds]
robdog has quit [Ping timeout: 250 seconds]
robdog_ has quit [Ping timeout: 258 seconds]
robdog has joined #lisp
angavrilov has joined #lisp
<fiddlerwoaroof>
Sure, but that's why you make it conditional on the safety and/or speed declarations
<ggole>
That's a possible design, yes
robdog has quit [Ping timeout: 264 seconds]
<ggole>
The performance hit can be pretty savage in bad cases, I think the racket people were talking about a few orders of magnitude.
<ggole>
(That happens when you have nested checks.)
verisimilitude has joined #lisp
robdog has joined #lisp
loli has quit [Ping timeout: 268 seconds]
milivoj has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
<fiddlerwoaroof>
the racket contract system is pretty sophisticated too: they have things like Higher-order contracts and stuff
<ggole>
Yeah, it's neat
<ggole>
They do a lot of interesting work.
milivoj has quit [Quit: milivoj]
milivoj has joined #lisp
loli has joined #lisp
orivej has quit [Ping timeout: 268 seconds]
orivej_ has joined #lisp
milivoj has quit [Client Quit]
milivoj has joined #lisp
<hectorhonn>
what's a good less compiler for common lisp?
<hectorhonn>
lesscss.org
<fiddlerwoaroof>
There isn't one written in common lisp
<hectorhonn>
its a wonder how one finds these libraries
<hectorhonn>
haha
<fiddlerwoaroof>
Shinmera used to be around here more often and I think that's how I found out about this
<fiddlerwoaroof>
Generally, Shinmera's libraries work well and have nice APIs and documentation
robdog has quit [Ping timeout: 268 seconds]
<fiddlerwoaroof>
... unlike mine :)
<verisimilitude>
Where are yours, fiddlerwoaroof?
<hectorhonn>
hahaha
<verisimilitude>
You have me curious, now.
<fiddlerwoaroof>
various things under my name on github :)
<fiddlerwoaroof>
most recently, I've pubilshed data-lens to quicklisp, which is a badly named collection of utilities for building functions up from simpler functions
<fiddlerwoaroof>
I intend to eventually add features for doing matching reads and "updates" to data structures in a functional styles, so it will actually be somewhat like its name
<phoe>
fe[nl]ix: lemme make a more descriptive ping: is my current version of split-sequence better for reviewing?
esrse has joined #lisp
CrazyEddy has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
<fiddlerwoaroof>
Is something like (defmacro :/ ()) conforming code?
<no-defun-allowed>
i belive so, keywords are only variable-bound
<fiddlerwoaroof>
rutils, which gets frequently pulled in as a dependency declares a macro on :+ :- :/ and :* to do in-place math
<fiddlerwoaroof>
that's really annoying to me, because it leaks everywhere
<fiddlerwoaroof>
and, Lispworks complains when it processes the macro form
<fiddlerwoaroof>
Error: Defining macro :FOOBAR visible from package KEYWORD { *handle-warn-on-redefinition* is :ERROR }
<no-defun-allowed>
fair enough
<fiddlerwoaroof>
(I guess I can just rebind that variable to make it less annoying)
gxt has quit [Ping timeout: 252 seconds]
<phoe>
rutils shouldn't do that, defining functions/macros on keywords is left for the user
rumbler31 has quit [Read error: Connection reset by peer]
rumbler31 has joined #lisp
dmiles has quit [Read error: Connection reset by peer]
jprajzne has joined #lisp
nowhere_man has quit [Ping timeout: 258 seconds]
robdog has joined #lisp
tsiolkov has quit [Ping timeout: 257 seconds]
Jesin has quit [Ping timeout: 257 seconds]
dmiles has joined #lisp
aindilis has quit [Ping timeout: 258 seconds]
Jesin has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
loli has quit [Ping timeout: 246 seconds]
milivoj has quit [Quit: milivoj]
vilivulpine has joined #lisp
<dim>
the main problem I have with pgloader/SBCL is “Heap exhausted during garbage collection”, where can I read about how to handle “consing” in CL and limit it drastically?
<dim>
thanks! do you know if that works well with multi-threaded programs?
loli has joined #lisp
<_death>
seems so according to the note
robdog has joined #lisp
<dim>
last time I tried to profile pgloader the profiler worked but didn't get useful information, because in a typical small-data run we start a lot of short-lived threads
heisig has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
<splittist>
morning, all y'all
gxt has joined #lisp
Krystof has joined #lisp
k has quit [Ping timeout: 272 seconds]
hhdave has joined #lisp
Nilby has quit [Read error: Connection reset by peer]
scymtym has quit [Ping timeout: 250 seconds]
igemnace has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 246 seconds]
robdog has joined #lisp
shrdlu68 has joined #lisp
xkapastel has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
igemnace has quit [Ping timeout: 272 seconds]
robdog has joined #lisp
space_otter has quit [Remote host closed the connection]
loli has quit [Ping timeout: 244 seconds]
igemnace has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
matijja has quit [Ping timeout: 244 seconds]
marvin2 has joined #lisp
robdog has joined #lisp
hectorhonn has left #lisp [#lisp]
Xach has quit [Ping timeout: 250 seconds]
Xach has joined #lisp
<beach>
Hello splittist.
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
scymtym has joined #lisp
loli has joined #lisp
prite has joined #lisp
robdog_ has joined #lisp
prite has quit [Quit: Konversation terminated.]
prite has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
gareppa has joined #lisp
robdog_ has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
gareppa has quit [Remote host closed the connection]
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 258 seconds]
robdog has joined #lisp
aindilis has joined #lisp
robdog_ has joined #lisp
igemnace has quit [Ping timeout: 246 seconds]
robdog has quit [Ping timeout: 258 seconds]
gxt has quit [Ping timeout: 240 seconds]
gxt has joined #lisp
robdog_ has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
shrdlu68 has quit [Ping timeout: 245 seconds]
makomo has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
nowhere_man has joined #lisp
igemnace has joined #lisp
robdog has joined #lisp
gxt has quit [Ping timeout: 250 seconds]
gxt has joined #lisp
igemnace has quit [Remote host closed the connection]
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
Achylles has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
loli has quit [Ping timeout: 245 seconds]
random-nick has joined #lisp
robdog has joined #lisp
shrdlu68 has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
loli has joined #lisp
markoong has joined #lisp
robdog has joined #lisp
amerlyq has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
nowhere_man has quit [Ping timeout: 245 seconds]
robdog has joined #lisp
q9929t has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog_ has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
Lord_of_Life_ has joined #lisp
robdog has joined #lisp
q9929t has quit [Quit: q9929t]
xkapastel has quit [Quit: Connection closed for inactivity]
<phoe>
look, that's a dynamic variable in a dynamic package
loli has quit [Ping timeout: 246 seconds]
<Xach>
phoe: WOW
<Ukari>
could (let ((*pkg:foo* nil))) works? i get a "Package *pkg does not exist." error
<Xach>
Ukari: if the package is nmaed "*PKG" and the symbol is named "FOO*"
<Ukari>
oh
makomo_ has joined #lisp
robdog has joined #lisp
makomo has quit [Ping timeout: 268 seconds]
makomo_ is now known as makomo
zmv has joined #lisp
zmv is now known as notzmv
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog_ has joined #lisp
loli has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
jprajzne has quit [Quit: Leaving.]
robdog_ has quit [Ping timeout: 268 seconds]
flazh has quit [Ping timeout: 246 seconds]
robdog has joined #lisp
amerlyq has joined #lisp
robdog has quit [Ping timeout: 258 seconds]
robdog has joined #lisp
flazh has joined #lisp
xkapastel has joined #lisp
Achylles has joined #lisp
wigust has joined #lisp
robdog_ has joined #lisp
Achylles has quit [Remote host closed the connection]
wigust- has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 250 seconds]
makomo has quit [Ping timeout: 268 seconds]
robdog_ has quit [Ping timeout: 250 seconds]
nowhere_man has joined #lisp
robdog has joined #lisp
sjl has joined #lisp
paule32 has quit [Ping timeout: 246 seconds]
robdog has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
mrcom has quit [Quit: This computer has gone to sleep]
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
igemnace has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
matijja has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
matijja has quit [Remote host closed the connection]
matijja has joined #lisp
robdog has joined #lisp
loli has quit [Ping timeout: 250 seconds]
mathrick has quit [Ping timeout: 240 seconds]
Zaab1t has joined #lisp
mathrick has joined #lisp
anewuser has quit [Quit: anewuser]
lumm has joined #lisp
kjeldahl has quit [Quit: WeeChat 1.2]
robdog has quit [Ping timeout: 244 seconds]
robdog has joined #lisp
hhdave has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 250 seconds]
jmercouris has quit [Remote host closed the connection]
loli has joined #lisp
robdog has joined #lisp
schjetne has quit [Ping timeout: 258 seconds]
robdog has quit [Ping timeout: 268 seconds]
akoana has joined #lisp
q9929t has joined #lisp
gxt has quit [Ping timeout: 268 seconds]
gxt has joined #lisp
robdog has joined #lisp
<cage_>
i have two systems with conflicting nicknames, how can load (via ASDF) both in the same system?
robdog has quit [Ping timeout: 250 seconds]
<cage_>
my best "solution" (so to say) is to define a system that just remove the offending nickname from one of the system that needs to be loaded
<phoe>
cage_: yes
<phoe>
load one system, remove the offending nickname, load another system.
<cage_>
phoe, thank you!
charh has quit [Ping timeout: 268 seconds]
jockc has joined #lisp
<phoe>
either that or wait for package-local nicknames to gain widespread usage and then for library writers to stop using nicknames
<cage_>
i am one of those that use nicknames in library, sorry :(
<phoe>
cage_: nah, no problem with it
<phoe>
(until there's a collision)
<cage_>
i won't i future i promise! ;)
<phoe>
cage_: when there's PLNs, there will not be much use for short nicknames since library writers will be able to define their own per-package nicknames
<cage_>
i see, so far is just CCL that does not have this feature?
<ThomasLewis[m]>
Yeah, I was just reading that. It is supposed to inherit the environment by default and use execvp to find the executable. Try providing the full path in the `program` string. If that doesn’t work, try #P”/path/to/uname”
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<akr>
yeah, full path works
<akr>
but I want to use the PATH variable
<scymtym>
akr: add :search t
robdog has joined #lisp
<akr>
oh
<akr>
damn, I thought that would be the default behavior
cyraxjoe has joined #lisp
loli has joined #lisp
<akr>
scymtym: thanks! now it works
<Xach>
i heart sb-ext:run-program
robdog has quit [Ping timeout: 250 seconds]
cage_ has quit [Remote host closed the connection]
<dim>
uiop:run-program is okay
cyraxjoe has quit [Ping timeout: 244 seconds]
<Xach>
sb-ext:run-program's cmucl kitchen-sink functionality roots make me happy
<dim>
mmm, I now see :wait nil :status-hook ... and I wonder how much I'm missing
karlosz has quit [Quit: karlosz]
<dim>
I should really learn how to avoid “Heap exhausted during garbage collection” when using SBCL, then I guess I would be quite happy with that implementation
<Xach>
:pty is cool too, and :directory
<dim>
:directory is easy to achieve with uiop:with-current-directory, so ok
charh has joined #lisp
<Xach>
dim: i don't think the semantics are the same in the face of threads.
<dim>
also, is :pty meaning that you can read the output of a program while it's running, PIPE style?
cyraxjoe has joined #lisp
<Xach>
dim: yes, you can read and write to interactive programs as if you were a user.
<Xach>
different from pipes in that regard
<Xach>
the programs thinks it is talking to a real user on a real tty, but it is a pseudo tty!
<dim>
that's pretty nice yes
atgreen has quit [Read error: Connection reset by peer]
<dim>
expect libs and things, or just mutli-threaded control of background jobs, sounds quite powerful
<Xach>
dim: i had a program that did (with-current-directory "foo" (run-program "bar")) but with threads it broke, and using (run-program "bar" :directory "foo") fixed it.
<dim>
anyway, I can't depend too much on SBCL until I know how to make its GC happy, and I obviously am very far from that at the moment
<Xach>
I think run-program's guts do the chdir after the fork and before the exec.
<Xach>
haven't checked, just been a happy user
<dim>
best position to be in in my book ;-)
<dim>
“just works” is under-appreciated
<pjb>
Personnally, I'm done with uiop:run-program. I'll complete my own implementation.
<dim>
pjb: it really looks like you have your own implementation of about anything and everything though...
<pjb>
I started to use CL too early, perhaps.
<makomo>
dim: heh, true :-)
<dim>
you might be the perfect example of the infamous lisp curse, to some non trivial degree
ravenousmoose has quit [Quit: Taking a quick nap...ZZzzz]
robdog has joined #lisp
pbgc has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
matijja has quit [Ping timeout: 272 seconds]
<fe[nl]ix>
phoe: I'll take a look this weekend
<phoe>
fe[nl]ix: thanks! Good luck
angavrilov has quit [Remote host closed the connection]
<asarch>
I would like to share all Common Lisp files at '/home/asarch/lisp' with PortableAllegoServe, however, when I do: (net.aserve:publish-directory :prefix "/lisp" :destination "/home/asarch/lisp/") and I visit: http://localhost:5477/lisp I only get: 28-aserve-worker: 02/15/19 - 14:58:29 - while processing command "GET /lisp HTTP/1.1", got error Error in SB-POSIX:STAT: No such file or directory (2)
<asarch>
How could I get the list of the files?
<comstar>
pjb: is THEY DID IT syntactically correct cobol
<comstar>
is this cobol lisp? (DEFINE PROCEDURE (ID X) X)
<comstar>
sorry ID is too vague it should be IDENITTY
robdog_ has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
Lycurgus has joined #lisp
<pjb>
comstar: no, it's me shouting.
robdog has quit [Ping timeout: 250 seconds]
Bike has quit []
schjetne has joined #lisp
izh_ has joined #lisp
pbgc has quit [Quit: Computer has gone to sleep.]
robdog has joined #lisp
asarch has quit [Quit: Leaving]
<drmeister>
If a CFFI call fills an array of values as in (cffi:with-foreign-object (foo :int 10) ... ) . What is the idiomatic way to get all the values in the array into a Common Lisp array? Do we read each value one at a time?
<phoe>
drmeister: hm
<phoe>
I'd suggest actually using a static array for that if possible, since that will mean no copying
<phoe>
otherwise, cffi:foreign-array-to-lisp
scymtym has joined #lisp
<drmeister>
There's a foreign-array-to-lisp?
<drmeister>
Huh.
<phoe>
yes
<phoe>
and it's undocumented, obviously
robdog has quit [Ping timeout: 272 seconds]
<drmeister>
Yeah - totally.
markong has joined #lisp
<phoe>
I'd do something about it if I wasn't swamped with other things
markoong has quit [Ping timeout: 245 seconds]
loli has quit [Ping timeout: 244 seconds]
varjag has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
<verisimilitude>
I don't see any issue with having your own libraries, pjb.
<drmeister>
How do you use it? Say I have a vector of :int of known length
robdog has joined #lisp
parjanya has quit [Remote host closed the connection]
<casouri>
Hi, I'm new to common lisp and want to learn by making a simply irc background client.
<casouri>
For that I want a caching facility that can save messags for me when I'm offline.
<casouri>
Is there any librarry that provids just that? I've looked up a few but none of them
<casouri>
mentions if the cache is saved to disk when it gets larger.
<phoe>
casouri: there are some simple Lisp databases that store things to disk
<phoe>
bknr.datastore is one that I know of and have used a little bit
<drmeister>
fe[nl]ix: That will require me to implement static-vectors. I haven't done that yet.
<phoe>
#justclaspthings
robdog has joined #lisp
<casouri>
I didn't thought about database, thanks! I'll check it out.
Bike has joined #lisp
<pjb>
casouri: it's not clear what you want to do.
<pjb>
casouri: do you want to save the messages you received when you were connected, or do you want to save the messages transmitted when you are not connected?
milanj has joined #lisp
<phoe>
that, too
<casouri>
So I want it to send the messages to the frontend when I'm connected, and save the messages when I'm not. So when I come back next time, I can see the histories.
robdog_ has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
<pjb>
casouri: so you realize that you need a component running and being always connected to the irc server to be able to receive the messages and save them? You cannot do that "off-line".
robdog has quit [Ping timeout: 264 seconds]
zotan has quit [Ping timeout: 268 seconds]
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
<casouri>
Sorry, by "offline" I mean closing (deisconnecting) the frontend from my backend server.
robdog_ has quit [Ping timeout: 264 seconds]
zotan has joined #lisp
svillemot has joined #lisp
Inline has quit [Read error: Connection reset by peer]
cgay has joined #lisp
Inline has joined #lisp
<aeth>
casouri: So you want an IRC client daemon that's always running and that can talk to a client that's not always running?
xkapastel has quit [Quit: Connection closed for inactivity]
<casouri>
Yeah
Zaab1t has joined #lisp
<Lycurgus>
the easiest solution
<casouri>
There probably exists one but I want to do some real project and learn more about CL...
<Lycurgus>
is just run a client like irssi under tmux
robdog has joined #lisp
<casouri>
Right...
<pjb>
casouri: there is bitlbee
<Lycurgus>
and setup unlimited logging
LiamH has quit [Quit: Leaving.]
Inline has quit [Read error: Connection reset by peer]
<pjb>
err, no, bitlbee serves another purpose.
Inline has joined #lisp
<aeth>
There's three ways to do it. The cheat way is to do it in the terminal and use screen or tmux. The proper way to do it is to write a daemon and communicate with it from a separate GUI client. The only-in-Lisp way to do it would be to launch the GUI from a function call in a running Lisp image, and persist the Lisp image, and most of the time it would just be running the background headless client.
<pjb>
casouri: So you need a plain irc log server. I wrote a bot to log irc channels, and search into the saved logs.
<fe[nl]ix>
drmeister: are Clasp arrays moved by the GC ? if not, adding support to static-vectors is pretty much no-op
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
<casouri>
aeth: I'm thinking about another all-in-lisp way: backend in CL and frontend in Emacs
<pjb>
casouri: I used montezuma to index the logs and search in them, but the result is no good (probably I don't know how to use montezuma, or just the irc messages are too short for good results). So the log search module should be changed. But otherwise, IIRC it should work.
dacoda has joined #lisp
<aeth>
casouri: Instead of using an inferior-lisp from Emacs, you can use SLIME+swank to talk to an existing running Common Lisp afaik (I never had to do that, though). If you persist that Lisp, you can always have that Lisp log, but only have a UI when it is launched from SLIME (or you could even write a SLIME-like Emacs UI that uses swank directly as your IRC client).
robdog_ has joined #lisp
Inline has quit [Read error: Connection reset by peer]
<pjb>
casouri: for example, you could add a "replay" command that would replay the messages from a given data or criteria.
Inline has joined #lisp
<fe[nl]ix>
drmeister: yay for MPS
<casouri>
pjb: Yeah that's really useful
robdog has quit [Ping timeout: 250 seconds]
Inline has quit [Read error: Connection reset by peer]
<casouri>
aeth: I was thinking about jsonrpc at first, but this approach is much cooler :) I'll see how to get it to work.
Inline has joined #lisp
<aeth>
drmeister: I think fe[nl]ix's approach is the generally used one. e.g. I moved my game engine to static-vectors for textures and geometry when I did a large terrain test and it took a noticable load time (at least tens of seconds, if not more) to a < 1 second load time by eliminating array copying.
orivej has joined #lisp
<phoe>
okay
<phoe>
the heresy that LIST-NAMED-CLASS is, is now compliant with ANSI CL
<pjb>
casouri: I'm running botihn in #hn ; /join #hn ; /msg botihn help ; notice that both botil and botihn are AGPL3, so you can get the sources.
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
robdog_ has quit [Ping timeout: 250 seconds]
<casouri>
Thanks, let me see...
loli has quit [Ping timeout: 250 seconds]
Inline has quit [Read error: Connection reset by peer]
<drmeister>
Why do I need static vectors though - the data won't move while the library call is writing into it.
Inline has joined #lisp
<phoe>
drmeister: so you can access the data in Lisp without any copying
<phoe>
and copying = slow and consing
<aeth>
drmeister: Even if you don't, the ways available are general purpose so you wind up with static or copying as your choices.
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
<fe[nl]ix>
drmeister: to be able to use foreign memory as a Lisp array instead of using the FFI
<fe[nl]ix>
that can sometimes be very convenient and avoids unnecessary copying
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
robdog has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
loli has joined #lisp
Inline has quit [Read error: Connection reset by peer]
didi has left #lisp ["O bella ciao bella ciao bella ciao, ciao, ciao."]
Inline has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
<drmeister>
Thankss
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
Lycurgus has quit [Quit: Exeunt]
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
robdog has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
Inline has quit [Read error: Connection reset by peer]