jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language<http://cliki.net/> logs:<https://irclog.whitequark.org/lisp,http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.5, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
equwal has quit [Ping timeout: 276 seconds]
shlecta has quit [Ping timeout: 244 seconds]
asarch has joined #lisp
<asarch> What is?: bogus DEFPACKAGE option: (USE :CLIM...
<asarch> This is the code:
<asarch> I'm trying to run the example from the "A Guided Tour of CLIM, Common Lisp Interface Manager"
<asarch> If I remove the package options, (define−application−frame ...) cannot be evaluated
<Bike> (:use :clim)
equwal has joined #lisp
<asarch> bogus DEFPACKAGE option: (USE :CLIM)
<pjb> asarch: try: (in-package :keyword) (cl:defpackage "FOO" (use clim))
<Bike> put in a colon. (:use :clim)
<Bike> see how there's a colon before the use
<pjb> or read it (in-package "KEYWORD").
<asarch> The function :USE is undefined.
v0|d has joined #lisp
<pjb> Yes, define it! (cl:defun use (cl:&rest packages) (cl:apply (cl:function cl:use-package) packages))
<asarch> ...
<asarch> ?
<pjb> What confuses you?
<Bike> pjb, what the hell
<Bike> asarch: (defpackage :wasser (:use :clim) (:use :clim-lisp))
<pjb> Bike: asarch has a problem understanding packages and keywords and qualified symbols. He needs some play and exercises wiht them.
<asarch> The name :CLIM does not designate any package.
<pjb> Define it!
<Bike> you need to load clim first
<pjb> (cl:defpackage "CLIM" (:use))
<asarch> As far I understand: (defpackage :wasser (:use :clim)) (in-package :wasser) ... ;The rest of the code of the example
<Bike> yeah, but you don't have clim loaded in your lisp image
<pjb> asarch: what symbol is read from "defpackage"?
<asarch> (ql:quickload "clim")
energizer has quit [Read error: Connection reset by peer]
<asarch> What do you mean with "what symbol" pjb?
<pjb> (type-of (read-from-string "defpackage")) #| --> symbol |#
<pjb> (defpackage "TEST" (:use)) (remove-duplicates (list (read-from-string "defpackage") (read-from-string ":defpackage") (read-from-string "cl:defpackage") (read-from-string "keyword:defpackage") (read-from-string "test::defpackage"))) #| --> (defpackage :defpackage test::defpackage) |#
<pjb> (let ((*package* (find-package "TEST"))) (read-from-string "defpackage")) #| --> test::defpackage ; 10 |#
<pjb> (let ((*package* (find-package "KEYWORD"))) (read-from-string "(cl:defpackage \"FOO\" (use clim))")) #| --> (defpackage "FOO" (:use :clim)) ; 32 |#
<pjb> (let ((*package* (find-package "CL"))) (read-from-string "(cl:defpackage \"FOO\" (use clim))")) #| --> (defpackage "FOO" (common-lisp::use common-lisp::clim)) ; 32 |#
<pjb> (let ((*package* (find-package "CL"))) (read-from-string "(cl:defpackage \"FOO\" (:use #:clim))")) #| --> (defpackage "FOO" (:use #:clim)) ; 35 |#
<asarch> This code evaluates fine: http://paste.scsys.co.uk/581392
<asarch> No, it doesn't
<asarch> This Emacs is broken
shlecta has joined #lisp
<pjb> asarch: try to add (print *package*) here and there.
<pjb> asarch: didn't you notice the fucking importance of the *package* variable for the meaning of what is read?
<pjb> Read again my examples above!
<pjb> clhs in-package
<asarch> One step at the time: 1. I start a fresh session of SBCL. 2. Load clim: (ql:quickload "clim") 3. Load the pure code of this example: (load "example-02.lisp") and I get:
<pjb> asarch: don't load the example-02, it's wrong!
<pjb> asarch: the stereotypical file will contain (defpackage "FOO" (:use "CL" "AND" "STUFF")) (in-package "FOO") …
sjl has joined #lisp
<pjb> if you want to type (use "CL"…) then you need *package* to be bound to the keyword package, so you need: (in-package "KEYWORD") (cl:defpackage "FOO" (use "CL" …)) (cl:in-package "FOO") …
<asarch> For every function?
<pjb> asarch: again, read clhs in-package and clhs use-package closely, and underline each difference!
<pjb> clhs use-package
<pjb> clhs in-package
<pjb> You know, the basic 7 errors game, any 5 years old children can do.
mindCrime has quit [Ping timeout: 240 seconds]
<asarch> Ok. How would you fix this code? How would you write something like: #include <clim.h> and voila!
<pjb> help me help you!
<asarch> If I (use-package :clim) I get: http://paste.scsys.co.uk/581394
<pjb> I explained you above the stereotypical file structure. Why cannot you apply it to your file? What's wrong with the sentence "the stereotypical file will contain (defpackage "FOO" (:use "CL" "AND" "STUFF")) (in-package "FOO") …" ?
<pjb> Can you not substitute the strings for your actual instance?
<pjb> Why not?
<pjb> What do you need to be told to be able to take a good example and reproduce it in your code?
<pjb> Yes, unsurprisingly.
<pjb> BUT!
<pjb> Have you READ this error message?
<pjb> What does it tell you?
<pjb> Note that if error messages are unclear or ambiguous, in general maintainers will take bug reports about them and clarify/correct them.
<pjb> So what's wrong in this error message that you don't understand the problem?
<asarch> I did, that was my first attemp, and this is what I get:
megalography has joined #lisp
<pjb> Usually, where there are N questions, there should be N answers…
<asarch> So far, I have this:
dddddd has quit [Remote host closed the connection]
energizer has joined #lisp
<asarch> And if I type the expression directly in the SBCL REPL I get the same errors:
<asarch> No matter if I loaded "clim" previously
<asarch> The standard is broken
<asarch> It's a lie :-P
Khisanth has quit [Ping timeout: 260 seconds]
moei has quit [Ping timeout: 244 seconds]
FreeBirdLjj has joined #lisp
<asarch> You cannot use :clim package directly in the REPL
<pjb> asarch: I cannot help you, since you don't answer to the questions.
rozenglass has joined #lisp
<pjb> FOr example, I could ask you what the standard says about a thing, but you wouldn't understand why I'm asking you about that thing, because you can't read an error message.
<pjb> So you would probably not read the clhs about that thing anyways.
Jesin has joined #lisp
<pjb> asarch: for example, we gave you the clhs use-package to read, but you still don't understand that packages such as the :clim package are not used IN the REPL, but used BY other packages.
Fare has quit [Ping timeout: 260 seconds]
<pjb> (also incidently, you've been told from the start the solution, but you couldn't apply it).
<asarch> I simply don't understand CLHS
<asarch> I read it if it was a prescription from a doctor
<asarch> I still don't have that level I need
FreeBirdLjj has quit [Remote host closed the connection]
Khisanth has joined #lisp
<asarch> So, an example would be fine. If I do: (defpackage :asarch (:use :common-lisp)) (in-package :asarch) I understand I am making available all the functions from :common-lisp plus the functions from :asarch, right?
<asarch> Just like "using namespace std;" from C++, right?
<asarch> Or maybe I am wrong. (That's the reason I am confused)
chamblin has quit [Quit: Leaving]
slyrus has quit [Quit: slyrus]
<no-defun-allowed> you're making all the symbols from CL used in ASARCH, yes.
<no-defun-allowed> IN-PACKAGE also means all new symbols in the file or REPL will be interned into ASARCH.
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 244 seconds]
parjanya has quit [Read error: Connection reset by peer]
phax has joined #lisp
smokeink has joined #lisp
Kundry_Wag has joined #lisp
mathZ has joined #lisp
Fare has joined #lisp
shlecta has quit [Ping timeout: 244 seconds]
Kundry_Wag has quit [Ping timeout: 240 seconds]
Oladon has joined #lisp
<pjb> no-defun-allowed: no, using packages doesn't intern symbols. Symbols can be interned only in their home package.
<pjb> symbols can be imported, or present (visible) in a package thru package use.
shlecta has joined #lisp
<pjb> notice however, that you can intern a symbol with more than one operator (intern, of course, but also import and shadow can intern a symbol).
<pjb> Also, contrarily to intern and shadow, and import can intern an existing symbol (if it has no home package).
jfb4 has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 240 seconds]
quipa_ has joined #lisp
quipa_ has quit [Remote host closed the connection]
quipa_ has joined #lisp
shlecta has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
quipa has quit [Ping timeout: 248 seconds]
<asarch> :-(
<asarch> So, in the example, (I was re-reading all my notes): Instead of writing (clim:make−pane ...) I could do (use-package :clim), right
<asarch> ?
Kundry_Wag has quit [Ping timeout: 244 seconds]
<pjb> yes.
<asarch> However, if I do that, I get USE-PACKAGE #<PACKAGE "CLIM"> causes name-conflicts in #<PACKAGE "COMMON-LISP-USER"> between the following symbols: COMMON-LISP:INTERACTIVE-STREAM-P, CLIM-LISP-PATCH:INTERACTIVE-STREAM-P
<pjb> As long as you do that in a package that doesn't already have symbols with the same name as the symbols exported by the "CLIM" package.
<pjb> What does clhs say about the CL-USER package?
<asarch> However, I can ignore functions from packages...
<pjb> This doesn't mean anything.
<pjb> functions are not from packages. THis is meaningless.
JuanDaugherty has joined #lisp
<Bike> maybe just use :clim-lisp? avoiding the conflict might be what it's for
<asarch> :shadow :CLIM-LISP-PATCH:INTERACTIVE-STREAM-P
<pjb> Bike: there's no conflit when you use it in a clean package!
<Bike> i mean, use :clim-lisp and not :cl
robotoad has joined #lisp
Kundry_Wag has joined #lisp
quipa_ is now known as quipa
<no-defun-allowed> pjb: i believe i said "new symbols ... [are] interned into ASARCH" and "all the symbols from CL [are] used in ASARCH" which is correct
robotoad has quit [Ping timeout: 244 seconds]
robotoad has joined #lisp
Kundry_Wag has quit [Ping timeout: 260 seconds]
buffergn0me has joined #lisp
<asarch> :-(
<asarch> But enough of chit-chat. How would you fix the package messing of this code?
<asarch> This the code. Please help me with the package part: http://paste.scsys.co.uk/581400
<mfiano> It is bad practice to use use-package a lot. The solution is to not use it, and allow your code to be more readable. Alternatively, shadow the exports or imports.
light2yellow has quit [Quit: light2yellow]
<beach> Good morning everyone!
<asarch> Bingo! You were sent by Heaven!
<asarch> beach, would you please help me with this code?. I have a mess with the package part: http://paste.scsys.co.uk/581400
<beach> asarch: In your package FENSTER, you need to :USE something that contains Common Lisp symbols too. Either :COMMON-LISP or :CLIM-LISP.
<beach> asarch: But as mfiano says, I recommend against :USE-ing packages other than :COMMON-LISP (or in this case :CLIM-LISP).
<beach> asarch: Instead I prefix all my CLIM symbols.
<beach> asarch: Also, the system to install from Quicklisp is not called CLIM, it is called MCCLIM.
<beach> asarch: You will find a very small (but working) example of using CLIM here: https://github.com/robert-strandh/Compta
<beach> 600 lines of code.
<beach> 235 of which make up the GUI.
<beach> But you can study the compta.asd file, the packages.lisp file, and you can look at how symbols are prefixed.
<asarch> Thank you!
<asarch> You're great!
<beach> Thanks. Good luck.
quipa has quit [Quit: Leaving]
Kundry_Wag has joined #lisp
kdas_ is now known as kushal
Bike_ has joined #lisp
Bike has quit [Ping timeout: 268 seconds]
Kundry_Wag has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
slyrus has joined #lisp
Bike_ is now known as Bike
rpg has joined #lisp
Pixel_Outlaw has quit [Quit: Leaving]
buffergn0me has quit [Ping timeout: 240 seconds]
<asarch> How do you run the code?
<beach> (compta-gui:compta)
ckonstanski has joined #lisp
<asarch> Thanks!
<no-defun-allowed> hi beach
<no-defun-allowed> yay, you're back to saying morning
<beach> Indeed.
anewuser has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
megalography has left #lisp [#lisp]
psq has quit [Remote host closed the connection]
didi has joined #lisp
<didi> Sooo. I want to use `assert' within `defsetf'. The problem is, the place I use inside `assert' turns into an `undefined variable'. I can do it, if instead of `defsetf', I use `defun (setf ...) ...'. Is there a way to use `assert' within `defsetf'?
<minion> didi, memo from pjb: there are downsides in using :type : then you won't be creating a new type, so it'll be harder to distinguish those structure instances from lists (or vectors). So you would do that, only when this would be the point.
<didi> pjb: Thank you.
<Bike> i don't understand what you mean. code?
<Bike> defsetf is kind of like a macro definition, so maybe there are timing issues.
<didi> Bike: Oh, sure. Let me cook something smallish.
<v0|d> didi: cook us a new album :p
<didi> And make it spicy.
<pjb> your only-number is a store variable. It's probably not set before you store it.
<Bike> (assert (numberp ,only-number) (,only-number)), i guess?
<pjb> the old value of th eplace is in your cons parameter.
<didi> Bike: Then it evals to the constant.
<Bike> does it?
<Bike> in the expansion function, ONLY-NUMBER will be bound to a symbol. the expansion of setf will bind that symbol to whatever. so it names a place.
<Bike> is my understanding.
<didi> Let me try again.
<Bike> oh, but it can optimize out bindings.
<Bike> in that case there is no place at all, so assert can't work.
<didi> Right.
<didi> Wait wait. I think it worked.
<didi> Hum. Crazy SBCL. I was macro expanding it and it tricked me.
<didi> Oh well. I should have actually tried, instead of reading the macro expansion. Sorry for the noise.
<didi> (but I think I've tried... /me scratches head)
Oladon has quit [Quit: Leaving.]
Kundry_Wag has quit [Remote host closed the connection]
<didi> Ah, right. The trouble program is https://paste.debian.net/hidden/cf0b6b87 . The issue is with the function parameter, not with the new value.
<didi> Now SBCL complains. If I try (setf (my-place 0 (list 1 2 3)) 42), "Variable name is not a symbol: 0."
<didi> And if I take the comma from (,n): "undefined variable: N"
<didi> I guess if I want to use `assert', I will have to live with the #'(setf ...) function call.
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<didi> Uuuh. Tho (let ((n ,n)) (assert ...) ...) makes it work.
<didi> Hehe, nah. It get stuck.
<didi> OK, `(let* ((n ,n)) (assert (numberp n) (n)) (setf (nth n ,list) ,value)) works, but at what cost? Maybe it's better to use (setf my-place) after all.
marusich has joined #lisp
<pjb> didi: I think that the point is that when you use defsetf it doesn't create a (setf foo) function, but setf expands the expression inline.
<asarch> The code between #| ... |#, what is that for?
<pjb> it's comment.
<asarch> Thank you!
Bike has quit [Quit: Lost terminal]
<didi> pjb: Indeed.
<pjb> #| it can #| be embedded |# into other coments |#
* asarch takes notes...
<pjb> or just read chapter 2.
<didi> I also noted that (nth 42 '()) evals to NIL but (elt '() 42) signals a condition. Weird.
<pjb> that's because elt works on vectors too.
<pjb> (cdr nil) = nil so there's no problem repeating cdr 41 times.
jameser has joined #lisp
<didi> Right. Tho I would expect NTH and ELT behave the same when feeding them a list.
<didi> Just my expectation.
<pjb> It would be sad if they were identical.
<didi> I see.
<pjb> By being different, they justify their existence. :-)
<aeth> Well I expect the main difference to be that NTH will have an error if not given a list and ELT will work fine if given certain non-lists
<aeth> Saves a line of code, so that justifies its existence.
<pjb> Well, one could expect that elt would still avoid calling length on lists. So it could return nil or signal an error at the same cost.
<pjb> But since nth already returned nil, it was more interesting to return an error, just like in the case for vectors.
Kundry_Wag has joined #lisp
Inline has quit [Quit: Leaving]
Kundry_Wag has quit [Ping timeout: 260 seconds]
phax has quit [Ping timeout: 240 seconds]
vlatkoB has joined #lisp
housel has quit [Read error: Connection reset by peer]
phax has joined #lisp
housel has joined #lisp
anewuser has quit [Ping timeout: 240 seconds]
sthalik has joined #lisp
<sthalik> hey
<beach> Hello sthalik.
<sthalik> did anything functionally a standard "extension" happen in the last few years?
Kundry_Wag has joined #lisp
<beach> An extension to the Common Lisp standard? No.
kerrhau has quit [Ping timeout: 256 seconds]
<sthalik> well, it's not like one's obliged to use-package '#:cl
<beach> I don't understand.
<sthalik> things like generic sequences
<asarch> Is there any way to know what a package is actually exporting?
<beach> Yes, but I don't understand your first question. Mainly because I don't understand the grammar of the sentence.
<beach> asarch: Sure.
<asarch> How?
<beach> clhs do-external-symbols
buffergn0me has joined #lisp
<sthalik> beach, there was this basic idea that the standard's immaculate, and it doesn't need anything new ever, at all
<sthalik> then there was NAMED-READTABLES being made, but then I quit
<beach> Oh, so you want to know what happened after that?
<beach> sthalik: Lots of stuff.
<beach> For example first-class global environments.
<sthalik> we've already had a portable code walker, didn't we?
<sthalik> but you mean something else
<beach> I don't see the relation.
<beach> sthalik: Also, fast portable sequence functions: http://metamodular.com/sequence-functions.pdf
anewuser has joined #lisp
smokeink has quit [Ping timeout: 256 seconds]
<beach> sthalik: And fast generic dispatch: http://metamodular.com/generic-dispatch.pdf
<beach> But I guess you want to know only about new features.
<beach> So forget about the last two.
<sthalik> no, these are significant in itself
<buffergn0me> beach: Those three are really cool
dented42 has quit [Quit: Textual IRC Client: www.textualapp.com]
kerrhau has joined #lisp
MichaelRaskin has joined #lisp
MichaelRaskin has quit [Client Quit]
MichaelRaskin has joined #lisp
<beach> buffergn0me: Thanks.
captgector has quit [Ping timeout: 256 seconds]
captgector has joined #lisp
<sthalik> is SICL in use?
<beach> It is not finished, so no.
<beach> But the Cleavir compiler framework is used.
<beach> Now it has three clients: SICL, Clasp, and CLISP.
<sthalik> that's good to hear
<sthalik> are there provably-exhaustible patterns now?
<beach> I don't know what that means.
<sthalik> beach, having passed some datum to the pattern-matching macro, have the compiler guarantee that all cases are taken care of
<beach> Ah, OK.
Arcaelyx has quit [Quit: Textual IRC Client: www.textualapp.com]
<phoe> sthalik: for what kinds of "patterns"?
<phoe> as in pattern matching? that would be a question to the trivia/optima libraries
shrdlu68 has joined #lisp
<sthalik> phoe, yeah but provable exhaustibility
Kundry_Wag has quit [Ping timeout: 240 seconds]
<sthalik> optima throws a runtime error in the non-exhaustibility case. that's disappointing.
<aeth> You can define a member type with a custom macro that also defines a custom ecase. The custom ecase can verify that every member in the member type foo is a clause in the foo-ecase macro and only members of that member type foo. At compile time. Afaik. It doesn't sound particularly hard, either.
<sthalik> beach, thank you for the info and links
<beach> Anytime!
<sthalik> (I remember removing all dwarf-eh sections from built programs)
<aeth> Now, that's just a tiny part of the problem, but I think the basic solution form would hold. Generate a function and a macro in a macro, and call that function in the macro to verify that the macro is valid
<sthalik> aeth, compilers like SBCL have inference done on the matched datum. can you access that?
<sthalik> e.g. assume some generic datum passed in, SBCL will assume there's no contradiction
<aeth> I don't think you can access SBCL's type inference. At least, I haven't seen a library do that. You'd have to use type declarations if you can't.
didi has quit [Ping timeout: 248 seconds]
<sthalik> aeth, can a pattern-matching library like that access, say, CHECK-TYPE or DECLARE TYPE?
<aeth> specialization-store, an otherwise wonderful library for type-based generic functions, cannot access anything other than type declarations from DECLARE as well as FTYPE declarations afaik.
<aeth> If you haven't seen it, this is the library. https://github.com/markcox80/specialization-store/
<sthalik> aeth, but a pattern-matching library won't infer (or access the info from the compiler) whether the pattern is exhaustible, will it?
<aeth> I don't think there's any more information available at compile time than the information that's in introspect-environment, but I could be wrong. If there is, it would be incredibly non-portable.
<aeth> I'm guessing there isn't more because there are libraries that could benefit from more.
pjb has quit [Ping timeout: 256 seconds]
<sthalik> I agree, about the lack of common denominator across compilers
<Shinmera> You can do more, but it is highly implementation specific.
<sthalik> then it's SB-PATTERN-MATCHING, sort of ruins the mood
<sthalik> sorry, I'm being a pain in the butt on purpose, but the point stands nonetheless :|
<aeth> If someone could port some of SBCL's behavior to CCL, it would no longer become implementation specific!
<aeth> (Or vice versa)
pjb has joined #lisp
<sthalik> or maybe do an inference library
<sthalik> in the type-reconstruction fashion, of course
<aeth> sthalik: What do you have in mind? Can you put some invalid code in a pastebin that you wish would work?
pjb has quit [Ping timeout: 256 seconds]
<sthalik> aeth, rather, what's potentially recognized as valid that ought be guaranteed recognized as invalid
<sthalik> progn (+ datum expr_1) (aref datum . rest)
<aeth> I think SBCL would catch that.
<sthalik> yes, it would
<sthalik> but it's not guaranteed, thus a pattern-matching library can't guarantee that
<sthalik> you know how well doing matches structures program flow?
<sthalik> now it's mainstream, C# took the good bits from F#. I had a brief stint with F#.
<sthalik> you remember Jon Harrop on cll?
mathZ has quit [Remote host closed the connection]
<sthalik> damn arrogant guy was right so often
<aeth> oh comp.lang.lisp
housel has quit [Read error: Connection reset by peer]
marusich has quit [Quit: Leaving]
schweers has joined #lisp
buffergn0me has quit [Ping timeout: 240 seconds]
pjb has joined #lisp
* lieven must have missed the many times Harrop was right. The arrogant part is spot on.
<sthalik> lieven, people engaging in the arguments on Lisp's side made a straw man out of type systems so Harrop had an easy time
<aeth> What was the argument? If I read it, it was so long ago that I don't recall
nowhere_man has joined #lisp
<sthalik> aeth, Lisp side: type systems peak at C89. pattern matching doesn't improve program flow
<aeth> huh? CL has some types that are only recently fashionable, like (or null foo)
<sthalik> aeth, DEFTYPE can't compare
kajo has quit [Ping timeout: 240 seconds]
pjb has quit [Ping timeout: 256 seconds]
<sthalik> I don't remember the syntax but this is invalid, as per stack overflow:
asarch has quit [Quit: Leaving]
<sthalik> deftype lets-crash (t) '(cons t (or null lets-crash))
<jackdaniel> sthalik: unless it is a type based on `satisfies', then function associated with it may compare object with anything
<aeth> sthalik: The built in typed conses are... lacking in many ways. However, most implementations now (or hopefully soon) enforce :type in slots on structs, so you can create your own typed cons.
<jackdaniel> or did I misunderstood the sentence?
<jackdaniel> hum
<sthalik> jackdaniel, recursive type definitions are explicitly disallowed
<aeth> Typed conses are pretty trivial to write, only a few hundred lines.
<aeth> (Oh, my implementation started at a few dozen and it'll probably end at a thousand)
<sthalik> aeth, did you go for arbitrary-length typed lists?
<lieven> the lisp side argument was mostly that lisp is a dynamic language and that so far attempts to mesh a static type system with it are clumsy.
<aeth> It's getting increasingly messy, though, so I might use inline specialization-store specializations instead of prefixes.
<aeth> The core of it is just a three line defstruct to have a car of type and a cdr of (or null type-cons)
<aeth> Yes, it's not as powerful as a Lisp cons and is only for lists. A separate kind of cons could be created for trees that has less guarantees.
<aeth> An early version was benchmarked to only be a 30% performance loss in SBCL, iirc.
<aeth> Now, there's lots of things about type systems that are lacking in CL, but typed conses via structs seem to be doable. Probably even immutable ones with :read-only, although probably not useful without the language itself optimizing them
<sthalik> tag bits vs type info
rozenglass has quit [Remote host closed the connection]
<sthalik> technically one can "freeze" a definition but then it's the "sufficiently smart compiler" fallacy
mange has quit [Remote host closed the connection]
<sthalik> aeth, how much can the compiler infer in practice?
<aeth> I do think that if CL has a weakness it's in its limited set of collections available, especially lacking in immutability and non-generic versions (except for specialized arrays).
<aeth> e.g. If CL had built-in hash tables that could only hold type foo, then the compiler would know on the GETHASH what the type is (if it knew the type of the hash table), which would remove a lot of declare/the/check-type/etc.
<sthalik> lieven, there was plenty of ignorance on modern type systems on the Lisp side
<sthalik> aeth, OTOH arrays with element-type are good about not boxing
Fare has quit [Ping timeout: 260 seconds]
<aeth> Right, I just which :element-type would work on more things and in more make-foos
<aeth> That would be 90% of the way to making CL "modern" imo.
<sthalik> yeah, not user-defined types :|
<aeth> One problem with :element-type is that you can't e.g. store (integer 0 10), it'll round it to probably (integer 0 15) or something.
<sthalik> pack bits are worse
<aeth> Sure, internally, it should round it, but it would be nice if it actually remembered you wanted to store (integer 0 10) so the type information isn't lost across the function boundary.
Kundry_Wag has joined #lisp
<sthalik> so much is lost across the function boundary
pjb has joined #lisp
<aeth> SBCL has sb-ext:*derive-function-types* which when enabled allows the non-standard behavior of assuming that the ftype of a function will never change.
<aeth> It's good to have that option, but you still lose information in data structures like hash-tables and lists
<sthalik> what's the purpose of statically-knowing the element type being fixnum between 0 and 10?
<aeth> sthalik: Overflow
<aeth> If for some reason you add (- most-positive-fixnum 20) or something, it knows it stays as a fixnum and so uses much faster arithmetic
<sthalik> aeth, at some point we'd grow a tree shaker too
<sthalik> I'm all for it
<aeth> e.g. (defun foo (x) (declare ((integer 0 10) x)) (+ (- most-positive-fixnum 10) x))
Kundry_Wag has quit [Ping timeout: 255 seconds]
<aeth> If you disassemble that on SBCL you get good disassembly.
Kundry_Wag has joined #lisp
<sthalik> what if you boilerplate-declaimed ftype and so on?
<sthalik> is it any different than the extension?
<sthalik> not that I'm partial for the boilerplate or anything!
<aeth> I personally have a define-function macro, so in my game engine I would write it as (define-function foo ((x (integer 0 10))) (+ (- most-positive-fixnum 10) x))
<sthalik> wow, time for coffee, then pepper you with questions
<aeth> Usually SBCL does a good job at deriving the return type and I don't think the other implementations have an ftype so I don't care about supporting return types. At some point I'd support it as an option
<aeth> But I think that would require a third generated defun so I have been procrastinating that
pjb has quit [Ping timeout: 256 seconds]
<sthalik> is a code walker with shadowed COMPILE remotely sensible?
<sthalik> now that I think of, the argument-environment bits for a walker aren't even necessary
<sthalik> aeth, how is GC for soft-realtime games? do you dynamic-extent the closures?
<aeth> sthalik: Personally, I preallocate everything that I can and use dynamic-extent on the rest. This is a bit... eccentric and no one else in #lispgames has a game loop style remotely as restrictive as this.
<aeth> This is for the engine's game loop only, though. I don't think I'd ever finish anything if I tried to use this style for the whole program.
<sthalik> you mean for the render tick or for the update tick?
<sthalik> do you have an asset-loading thread?
<sthalik> from my experience, consing in the render tick is suicide
pjb has joined #lisp
* shrdlu68 wonders what the guys over at #lispgames are building.
<aeth> Everything called from zombie-raptor/core/window::game-loop doesn't cons in SBCL. It's too hard to profile other implementations for this, and possibly impossible even if I could profile them.
<aeth> (Obviously if I loaded assets while the game loop was running I wouldn't be able to keep this restriction to this extreme anymore.)
<sthalik> that's not completely true
<aeth> In CL it might be true, though.
<sthalik> some FFI decompression code won't trigger CL collections
<aeth> I currently only FFI SDL and OpenGL, and I'd like to keep it that way.
<sthalik> then what about your image assets?
<sthalik> ah, SDL_image
<aeth> The way my engine is structured, it doesn't even load images! I have loaded images before in some of my unpublished tests, but I feed in the texture assets to the make-window function.
<sthalik> it all gave me a horrible idea.
<sthalik> why not jump-start the game project in Lisp
<sthalik> it's not like proper type derivation is even necessary
pjb has quit [Ping timeout: 256 seconds]
<sthalik> in multiple C++ projects I've hit a roadblock where there's a decent amount of top-down design that can't go away
light2yellow has joined #lisp
ebrasca has quit [Remote host closed the connection]
pjb has joined #lisp
kajo has joined #lisp
<aeth> sthalik: What game project?
<sthalik> even at this point there's no remote equivalent of lexical non-local return in fancy static languages
<sthalik> I miss it more than even macros
airgapped has joined #lisp
<sthalik> aeth, what good are games if they're just iterative improvements? if it's ever done, it must transgress boundaries and do what was thought to be not feasible
airgapped has quit [Client Quit]
<sthalik> aeth, Falcon 4.0 included a persistent ground/air war simulation. post-mortem interviews explained "we didn't know any better"
<sthalik> so why not an RPG-alike with decent Falcon 4.0 influence. remember Ultima 7?
<sthalik> these professions not just window dressing, but something that uses resources.
pjb has quit [Ping timeout: 240 seconds]
siraben has quit [Quit: ERC (IRC client for Emacs 26.1)]
<sthalik> in the end, task it good enough to prevent everyone from dying out of thirst.
<aeth> I think the limiting factor is normally art. When the game devs don't care about art (e.g. Dwarf Fortress) they can do ridiculous things
<sthalik> aeth, bootstrap using a Qt window with unicode/24-bit color and tooltips
<aeth> On the other hand, when something's AAA photorealistic, everything is so expensive to make *and* you don't want to increase the risk by venturing too far from the formula
kajo has quit [Ping timeout: 260 seconds]
<sthalik> the final plan is to do isometric, at least Arcanum-level
<sthalik> I've done some baked sprites in Max, but then the amount of props is just too much
<sthalik> lamps, bookshelves, beds, name it
Kundry_Wag has quit [Ping timeout: 244 seconds]
<aeth> I plan on doing space games, at least for now. Space is mostly empty. No, even more empty than that.
<sthalik> Fallout-or-bust, an absolute prohibition on perspective projection
<sthalik> aeth, read on Rogue System. it was also to be inspired by Falcon 4.0.
<sthalik> there's a modern maintained F4 derivative based on stolen code. current copyright holders allow it as a gentleman's agreement.
<sthalik> in fact it's in their own best interest.
<aeth> We should probably take this to #lispgames before someone complains
<sthalik> okay
<aeth> (this is the strictest lisp channel as far as topic enforcement goes)
shrdlu68 has quit [Ping timeout: 240 seconds]
pjb has joined #lisp
Patzy has quit [Ping timeout: 260 seconds]
robotoad has quit [Quit: robotoad]
Patzy has joined #lisp
zfree has joined #lisp
pjb has quit [Remote host closed the connection]
pjb has joined #lisp
shrdlu68 has joined #lisp
pjb has quit [Remote host closed the connection]
pjb has joined #lisp
makomo has joined #lisp
bigfondue has quit [Ping timeout: 256 seconds]
anewuser has quit [Ping timeout: 240 seconds]
pjb has quit [Ping timeout: 240 seconds]
edgar-rft has quit [Remote host closed the connection]
kajo has joined #lisp
kerrhau has quit [Ping timeout: 256 seconds]
emacsomancer has quit [Ping timeout: 244 seconds]
kajo has quit [Ping timeout: 265 seconds]
pjb has joined #lisp
pjb has quit [Ping timeout: 276 seconds]
bigfondue has joined #lisp
kajo has joined #lisp
Bronsa has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
pjb has joined #lisp
Guest25371 has joined #lisp
figurelisp has joined #lisp
angavrilov has joined #lisp
sthalik has quit [Quit: Lost terminal]
renzhi has quit [Quit: WeeChat 2.1]
pjb has quit [Ping timeout: 256 seconds]
renzhi has joined #lisp
pjb has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
unanimousarc has joined #lisp
pjb has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 240 seconds]
pjb has quit [Ping timeout: 256 seconds]
<p_l> lol @ strictest...
m00natic has joined #lisp
shrdlu68 has quit [Ping timeout: 268 seconds]
pjb has joined #lisp
pjb has quit [Remote host closed the connection]
<aeth> p_l: Well, #lispcafe does a very bad job at enforcing off-topicness and is often about Lisp.
pjb has joined #lisp
<p_l> :D
pjb has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
pjb has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
pjb has joined #lisp
anewuser has joined #lisp
orivej has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
Kundry_Wag has quit [Ping timeout: 260 seconds]
jameser has quit [Ping timeout: 244 seconds]
pjb has joined #lisp
doubledup has joined #lisp
dddddd has joined #lisp
razzy has quit [Read error: Connection reset by peer]
razzy has joined #lisp
varjag has joined #lisp
<thekolb> Xach: I have this weird situation where a dependency wants asdf3 but my quicklisp has asdf2? I did update-client but that didn’t upgrade asdf?
anewuser has quit [Ping timeout: 240 seconds]
<thekolb> (don’t ask me how I ended up with a dependency that wants asdf3 in the first place, good question though)
milanj has joined #lisp
<Shinmera> Quicklisp only ships ASDF2.
<Shinmera> Update your implementation or download a recent ASDF
<Shinmera> Also lots of dependencies require ASDF3 nowadays (for instance: all of my libraries)
<thekolb> I am running the latest CCL from Nov2017?!
<thekolb> why do I not have asdf3 (-:
<thekolb> something wrong with my installation I suppose
<thekolb> MichaelRaskin: any reason why the NixOs ccl wouldn’t come with asdf3?
random-nick has joined #lisp
<MichaelRaskin> I think the Nix package ships whatever upstream ships.
<jackdaniel> thekolb: asdf is not part of the standard (given how it constantly changes that would mean that our standard is progressing!). You may download lastest asdf relase, compile it and put (load …) in your .cclrc before loading quicklisp
<jackdaniel> that will give you whichever asdf you want to have
<jackdaniel> you may compile it with (compile-file "asdf.lisp")
<MichaelRaskin> Nixpkgs has various Lisp wrappers, these do use ASDF3
doubledup has quit [Remote host closed the connection]
doubledup has joined #lisp
rumbler31 has joined #lisp
pjb has quit [Ping timeout: 256 seconds]
zfree has quit [Quit: zfree]
<Xach> thekolb: clozure cl has asdf 3!
rumbler31 has quit [Ping timeout: 260 seconds]
pjb has joined #lisp
zfree has joined #lisp
JuanDaugherty has quit [Quit: Exeunt]
pjb has quit [Ping timeout: 240 seconds]
<thekolb> MichaelRaskin: the ccl package on NixOS is broken (doesn’t set CCL_DEFAULT_DIRECTORY)
<MichaelRaskin> Hm, we already set CCL_RUNTIME
<MichaelRaskin> What should CCL_DEFAULT_DIRECTORY be in addition?
<MichaelRaskin> Ah, it's only build-time
<thekolb> MichaelRaskin: CCL_RUNTIME has no effect on ccl whatsoever and seems to be a variable introduced by the Nix expression for referencing the kernel
<MichaelRaskin> Shoud CCL_DEFAULT_DIRECTORY point to the copied root?
<thekolb> MichaelRaskin: CCL_DEFAULT_DIRECTORY is a variable used by ccl to refer t its installation destination
<thekolb> yes
<thekolb> see scripts/ccl
<MichaelRaskin> Hmmm. Maybe scripts/ccl should be also wrapped or symlinked into bin/
<thekolb> MichaelRaskin: Not really, you should make sure that $(which ccl) sets CCL_DEFAULT_DIRECTORY appropriately and execs the kernel
<thekolb> the scripts are more of an example IMHO
Bronsa has quit [Remote host closed the connection]
Bronsa has joined #lisp
<thekolb> (and make sure it execs)
<MichaelRaskin> I think (require :asdf) does work with the current CCL package
pjb has joined #lisp
<MichaelRaskin> Any simple test case to check that the fix works?
<MichaelRaskin> Yes, L79 is my plan
<thekolb> MichaelRaskin: ccl -e "(print (getf *features* :asdf3))" -e "(quit)"
<thekolb> or alternatively ccl -e "(quit (or (getf *features* :asdf3) 1))"
<MichaelRaskin> You meant find, not getf, right?
<thekolb> yes right^^
<thekolb> also --no-init otherwise...
<MichaelRaskin> env -i $(test-build -test ccl)/bin/ccl -e "(require :asdf)" -e "(print (find :asdf3 *features*))" -e "(quit)"
<MichaelRaskin> Does say :asdf3
pjb has quit [Ping timeout: 256 seconds]
<MichaelRaskin> (pay no attention to my debug wrapper for nix-build)
<thekolb> ccl -n -e "(quit (or (find :asdf *features*) 1))"
<thekolb> try this one
<MichaelRaskin> Works the same with or without CCL_DEFAULT_DIRECTORY
<thekolb> I suspect you load asdf in your .ccl-init
<MichaelRaskin> If I don't pre-require :asdf, it is not found — again, with or without CCL_DEFAULT_DIRECTORY
<MichaelRaskin> I don't have .ccl-init
<MichaelRaskin> I did paste the line that does pre-require :asdf
<MichaelRaskin> Wait a minute
<MichaelRaskin> Do you use stable channel for Nixpkgs?
<thekolb> yes
<MichaelRaskin> CCL 1.11.5 in master includes ASDF3 (even without CCL_DEFAULT_DIRECTORY variable set), maybe stable has an older one?
pjb has joined #lisp
<thekolb> MichaelRaskin: other things will break if CCL_DEFAULT_DIRECTORY isn’t set properly
<MichaelRaskin> Yes, and I have the change and I want to test one of these things before pushing to master
<MichaelRaskin> To check if I have made some silly mistake that makes the change useless
pjb has quit [Ping timeout: 255 seconds]
<unanimousarc> Hello, new person here, if I invoke (ql:quickload x) will that package remain installed for future sessions?
<thekolb> MichaelRaskin: I did nix-env -f https://github.com/NixOS/nixpkgs/archive/master.tar.gz -i ccl and ccl -n -e "(ignore-errors (require 'asdf))" -e "(quit (or (find :asdf3 *features*) 1))"; echo $?
<Xach> unanimousarc: no
<thekolb> (no asdf)
<Xach> unanimousarc: well, it's a bit more subtle than that
<Shinmera> unanimousarc: It will remain /downloaded/ on disk, but not /loaded/
<unanimousarc> Xach: so I need to put the (ql:quickload) in my sbcl-init.lisp ?
<Xach> unanimousarc: shinmera is right
<MichaelRaskin> thekolb: I think CCL defaults to the image location if CCL_DEFAULT_DIRECTORY is unset; given the details of the Nix package that seems to mean the variable is irrelevant
<phoe> unanimousarc: quicklisp fetches the dependencies from the network and then invokes ASDF to load the system into memory.
<MichaelRaskin> Let me check with a fresh user and nix-env
<Xach> unanimousarc: there are many options, that's one
<phoe> the former is persistent, the latter needs to be done after each reload of the Lisp image.
<unanimousarc> Okay cool, thanks
<phoe> you can theoretically save the resulting Lisp image and then reload that one, but it's not commonly done during development - better to just #'ql:quickload things again.
DataLinkDroid has quit [Ping timeout: 240 seconds]
Kevslinger has joined #lisp
<MichaelRaskin> thekolb: (quit :asdf3) doesn't work, a true if is needed there
<MichaelRaskin> If you run «which ccl», do you actually get the version in the profile? If you just run CCL, what version is reported?
rpg has joined #lisp
<thekolb> MichaelRaskin: yes
pjb has joined #lisp
unanimousarc has quit [Remote host closed the connection]
<thekolb> MichaelRaskin: Can you still not reproduce this?
jameser has joined #lisp
<MichaelRaskin> Well, in a fresh test account I use your installation command (well, with -p, I have a complicated non-default setup) — it gives CCL which loads ASDF3
<thekolb> I don’t know what else to tell you...
<thekolb> I have /nix/store/32xnrnrf399nxf616fxihx00qi6xb4mv-ccl-1.11.5 and its broken
<MichaelRaskin> Well, I could try to pastebin a nix-expression that imports from a fixed revision and checks CCL in build-time — failure-or-success of Nix builds is less environment-dependent than installation
<MichaelRaskin> Ah!
<MichaelRaskin> I have the same path and it is not broken when I try to test it
orivej has quit [Ping timeout: 240 seconds]
<thekolb> If I run ccl -n and do (require 'asdf) I get an error
X-Scale has quit [Ping timeout: 240 seconds]
<thekolb> is your pwd the ccl source tree by any chance?^^
<MichaelRaskin> Definitely not
<phoe> thekolb: what kind of error?
<MichaelRaskin> Does this also error: env -i /nix/store/32xnrnrf399nxf616fxihx00qi6xb4mv-ccl-1.11.5/bin/ccl -n -e '(require :asdf)'
<thekolb> Ah!
<thekolb> it doesn’t
<MichaelRaskin> And the same without env -i ?
<thekolb> omg I’m sorry, apparently there is a bogus CCL_DEFAULT_DIRECTORY in my environment
nowhere_man has quit [Ping timeout: 248 seconds]
<MichaelRaskin> Heh
ym has joined #lisp
<MichaelRaskin> That's why I sometimes test in an empty user
jameser has quit [Quit: Textual IRC Client: www.textualapp.com]
flazh has joined #lisp
Kundry_Wag has joined #lisp
DataLinkDroid has joined #lisp
kajo has quit [Ping timeout: 256 seconds]
<v0|d> nix-shell --pure might help.
<v0|d> no need for a new user.
<MichaelRaskin> v0|d: until I am reproducing a nix-env invokation
X-Scale has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 244 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
LiamH has joined #lisp
Bike has joined #lisp
Inline has joined #lisp
<AeroNotix> What's the cheapest / easiest way to represent infinity that allows me to compare it with numbers.
<AeroNotix> I.e. I want to have a representation of infinite that I can do things like (< 123 +infinity+)
<AeroNotix> (the above would return T
<AeroNotix> )
<Shinmera> well, there's the IEEE float infinities, but they're not part of the standard :/
<Shinmera> I've been meaning to make a portability library for that
<AeroNotix> yeah well get on that
<AeroNotix> it's _important_
<AeroNotix> jk
<Shinmera> Jeez I just published two libraries today
<Shinmera> But fine
<AeroNotix> Shinmera: only two?
<Shinmera> Yes
<AeroNotix> slacking
<Shinmera> I'll see if I can be bothered to do a proper implementation survey later today
<Shinmera> Right now I'm starving so I'll grab some grub
<AeroNotix> cool
<AeroNotix> v0|d: half of those are unbound for me.
<v0|d> try (apropos 'most-)
makomo has quit [Ping timeout: 248 seconds]
<v0|d> maybe you'll get different ones.
makomo has joined #lisp
<AeroNotix> v0|d: I used the sb-ext ones for now. I'll find something more portable later. It's only for a debugging thing right now anyway
Kundry_Wag has joined #lisp
orivej has joined #lisp
mindCrime has joined #lisp
renzhi has quit [Ping timeout: 256 seconds]
foom2 is now known as foom
shlecta has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
renzhi has joined #lisp
v0|d has quit [Remote host closed the connection]
unanimousarc has joined #lisp
<unanimousarc> anyone here got a lisp related blog?
<random-nick> well, there's a blog aggregator at planet.lisp.org
varjag has quit [Quit: ERC (IRC client for Emacs 24.5.1)]
<unanimousarc> I'll take a look, but I would prefer personal recommendations :)
sjl_ has joined #lisp
Fare has joined #lisp
<Shinmera> unanimousarc: It's not a recommendation, but here's mine. http://blog.tymoon.eu/tagged/common%20lisp
sjl has quit [Ping timeout: 240 seconds]
<unanimousarc> Shinmera: thanks ;)
Kundry_Wag has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
orivej has joined #lisp
Kundry_Wag has quit [Ping timeout: 276 seconds]
kajo has joined #lisp
rippa has joined #lisp
FreeBirdLjj has joined #lisp
Kundry_Wag has joined #lisp
<LiamH> AeroNotix: If you don't mind loading a foreign library, GSLL has it: (< 1.0 gsl:+positive-infinity+) => T
<sjl_> unanimousarc: I've written some CL-related entries on mine http://stevelosh.com/blog/
<unanimousarc> sjl_: thanks i'll take a look
<unanimousarc> sjl_: definitely checking out that chip8 series
moei has joined #lisp
renzhi has quit [Ping timeout: 268 seconds]
Jesin has quit [Remote host closed the connection]
orivej has quit [Remote host closed the connection]
* Xach must really fix his planet lisp twitter gateway again
orivej has joined #lisp
makomo has quit [Ping timeout: 240 seconds]
Jesin has joined #lisp
JuanDaugherty has joined #lisp
makomo has joined #lisp
<Shinmera> Speaking of twitter, there were some API deprecations regarding direct messages that I haven't had time to fix in Chirp.
<Shinmera> Don't know when I can be bothered to fix them either
gravicappa has joined #lisp
ckonstanski has quit [Remote host closed the connection]
ckonstanski has joined #lisp
nika_ has joined #lisp
Josh_2 has joined #lisp
kajo has quit [Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.]
<drmeister> With asdf - is there a way to get a tree of dependencies from a system? I have a groveler that I use for finding all files required by a system in the order that they need to be loaded.
<Shinmera> Ha ha, oh boy the CCL source for infinity-p has a comment: ; not sure this is right
<drmeister> The groveler has a function that says it returns all of the systems required by given list of systems. I think this may be what I need.
<drmeister> But I want to build the tree of dependencies.
renzhi has joined #lisp
<drmeister> I want to parallelize the building of the tree - so I need to know what it looks like first.
<Shinmera> drmeister: Sure, holy on
<Shinmera> *hold
<drmeister> If it's a linear sequence - well - then I need to put some work into splitting things out a bit to make it a tree.
<drmeister> Shinmera: Thank you - I'll keep spitting out what I'm looking for - maybe someone will have some thoughts on it.
<pjb> AeroNotix: if you want to compare with numbers, you have a big problem: numbers are not ordered!
<drmeister> Then I'll need to time how long each system needs to build it - then I want to organize the build so that it takes as little time as possible using multiple processes.
<pjb> AeroNotix: in lisp, numbers include complex numbers, and complex numbers are not ordered.
<drmeister> Basically - I want to parallelize the building of a large collection of asdf systems so they build as quickly as possible. Given that POIU is MIA for current versions of ASDF.
<drmeister> AFAIK
<pjb> AeroNotix: then if you want to restrict yourself to real, then in lisp we have most-positive-long-float that is bigger than all floats, but not to all integers.
<AeroNotix> I just need something bigger than all integers
Fare has quit [Ping timeout: 256 seconds]
<pjb> AeroNotix: for integers, there's no such value.
<drmeister> Shinmera: Thank you - I'll give it a whirl.
Fare has joined #lisp
<pjb> AeroNotix: at a given time, there's a maximum representable integer, but since it may depend on the available memory, it may grow later.
papachan has joined #lisp
<pjb> AeroNotix: so you have to use a symbol, and implement your own comparisons.
<AeroNotix> Okay
<pjb> (defun inferior (a b) (or (eql :-infinity a) (eql :+infinity b) …))
vlatkoB has quit [Remote host closed the connection]
zfree has quit [Quit: zfree]
vlatkoB has joined #lisp
figurelisp has quit [Quit: Lost terminal]
<pjb> AeroNotix: you may also shadow < <= etc. calling cl:< cl:<= etc when you only have numbers.
<pjb> (not real methods, just functions, since there are 0-n arguments.
<pjb> )
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
schweers has quit [Ping timeout: 276 seconds]
<drmeister> Shinmera: Is the information about system dependencies available after I load-asd - or do I need to load-system everything?
<drmeister> I'm about to find out...
chipolux has joined #lisp
<jackdaniel> drmeister: you need to load all asd file (i.e by find-system), but there is no need to load systems into the image
<jackdaniel> it is quite problematic as it is anyway, because asd files are programs, but not as bad as being forced to load all libraries to learn their dependencies
<drmeister> Does find-system of the top asd load all dependent asd files?
<Shinmera> jackdaniel: Does ECL have something similar to sb-int:with-float-traps-masked that allows you to mask which floating point traps signal conditions?
robotoad has joined #lisp
<jackdaniel> yes
<drmeister> I'm trying to avoid doing more work than I need to do.
<jackdaniel> I mean: yes to floats
<jackdaniel> regarding asdf, I don't know
<Shinmera> drmeister: No
<Shinmera> drmeister: It only loads a system file if it has to due to :defsystem-depends-on or due to find-system
<drmeister> And I have a relationship with asdf that is characterized by timidity.
<jackdaniel> bugs everywhere http://i.imgur.com/sEgU8qk.png :)
<drmeister> jackdaniel: And your scrollbars don't work.
<Shinmera> jackdaniel: What is the functionality called in ECL? apropos is failing me.
* drmeister has never seen a scrollbar that he hasn't tried to scroll with.
<jackdaniel> drmeister: you mean that you can't scroll a png file? :-)
<jackdaniel> Shinmera: it is obscure and not part of official API, careful
<jackdaniel> si::trap-fpe
<Shinmera> Thanks
<Shinmera> I'm building another implementation wrapper layer, so I'll take the hit :)
edgar-rft has joined #lisp
shka_ has joined #lisp
quipa has joined #lisp
rpg has joined #lisp
JuanDaugherty has quit [Quit: Exeunt]
housel has joined #lisp
<drmeister> How does one redirect the ~/.cache directory so that quicklisp/asdf drop the generated code somewhere else?
<jackdaniel> drmeister: if you set XDG_CACHE_HOME (env var) it should help
<jackdaniel> also (defvar *user-cache* nil
<jackdaniel> "A specification as per RESOLVE-LOCATION of where the user keeps his FASL cache")(defvar *user-cache* nil
<jackdaniel> "A specification as per RESOLVE-LOCATION of where the user keeps his FASL cache")
<jackdaniel> ops, sorry
<drmeister> asdf/interface:*user-cache* - I see that.
quipa has quit [Quit: Leaving]
<drmeister> And XDG_CACHE_HOME in asdf - thank you!
wigust has quit [Ping timeout: 265 seconds]
Copenhagen_Bram has joined #lisp
shlecta has quit [Read error: Connection reset by peer]
fourier has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 256 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
skidd0 has joined #lisp
Kundry_Wag has joined #lisp
fourier has quit [Ping timeout: 240 seconds]
FreeBirdLjj has joined #lisp
<phoe> Shinmera: I read "infinite negativity" the first time and went "wait what"
<Shinmera> infinite negativity is my middle name
<skidd0> you've got a long name
jself has quit [Quit: ZNC - 1.6.0 - http://znc.in]
Fare has quit [Ping timeout: 256 seconds]
Copenhagen_Bram has quit [Read error: Connection reset by peer]
captgector has quit [Read error: Connection reset by peer]
dwrngr` has joined #lisp
captgector has joined #lisp
Copenhagen_Bram has joined #lisp
dwrngr has quit [Disconnected by services]
dwrngr` is now known as dwrngr
jself has joined #lisp
Copenhagen_Bram has quit [Read error: Connection reset by peer]
Copenhagen_Bram has joined #lisp
mathrick has quit [Ping timeout: 276 seconds]
theseb has joined #lisp
light2yellow has quit [Quit: light2yellow]
nika_ has quit [Quit: Leaving...]
mathrick has joined #lisp
<theseb> You can really define the entire lang in terms of about 8 primitives? Why does that seem impossible to me? Think of how complex common lisp is
m00natic has quit [Remote host closed the connection]
unanimousarc has quit [Remote host closed the connection]
Jesin has quit [Remote host closed the connection]
<Xach> theseb: it's easy if one of the primitives is make-load-form-saving-slots.
<Shinmera> The semantics, yes. But an implementation still needs to do a lot more -- like handling OPEN, I/O, etc.
<Xach> sorry, joking around.
<pjb> theseb: you only need one primitive.
<theseb> Shinmera: aha! yes..i knew something was missing!!! All the //side effects// were not mentioned like I/O!
<theseb> Paul Graham *lied* to me
<theseb> dammit
<theseb> srsly...someone should mention that
<pjb> theseb: Von Neuman architecture only needs 1 microinstruction (conditional-move).
Fare has joined #lisp
<MichaelRaskin> Well, if you target Plan9 you don't need many I/O primitives, and then they cover all the OS interaction…
<pjb> theseb: with lambda calculus, you can implement state and I/O by simulating the whole universe!
<pjb> theseb: this is actually how our universe comes to be.
<pjb> theseb: there's a "desire", or "universal love" or "god" that makes kinds of quantum fluctuations in the mathematical world generate random mathemathical objects. Functions and lambda calculus are actually very simple mathematical objects, and thus appear naturally, and "develop" (are "created") by themselves, until find this god lambda calculus program that decides to simulate the whole universe and to reproduce little simulatio
kajo has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
Jesin has joined #lisp
Bronsa has quit [Ping timeout: 240 seconds]
<theseb> pjb: that was deep
<theseb> thank i guess
<pjb> theseb: also, it's not very hard to implement a hardware simulation to do I/O in pure lambda calculus.
<theseb> pjb: imho..i think it best to just punt and define an abstract "input" and "output" primitive
<housel> tedious, but not hard
<theseb> pjb: both just accept and emit bit strings
<pjb> theseb: of course, if you want to hook to other universes, such as ours, you can always branch out to primitives implemented in another system, eg. in electrons and silicium atoms.
nsrahmad has joined #lisp
<pjb> (but notice the funny nature of fermions and bosons that are both just probability wave functions, ie. not any more real than lambda calculus functions).
<theseb> pjb: what the #$@#$? why are you making this so complicated? i'm suggesting a simple input and output primitive while you want to hook up to other universes!?!!? am i missing something?
<pjb> theseb: our universe is one of those other universes.
<pjb> maths is not in our universe.
emaczen has quit [Quit: ERC (IRC client for Emacs 24.5.1)]
<pjb> I just explained that our unvierse was in maths.
<Shinmera> Please >>##philosophy
<pjb> Well, this is this infamous question about primitives. Forget them.
<pjb> You can do metacircular definitions.
<pjb> Primives, like axioms, are your own totally and entirely subjective and arbitrary choice.
<theseb> pjb: i like that link....avoid english and use lispy mini-langs instead to bootstrap
<theseb> pjb: i think that is the "Lisp Way (TM)"...to define layers of langs
<pjb> or realize that lisp was created 50 years ago, and that we don't need to bootstrap anymore: just write CL in CL.
<pjb> You might need to bootstrap again if you go to Mars, and a meteor destroys all computing equipment.
<pjb> Then you will have to mine metals, build a new computer, and program it, bootstrapping, hopefully, a new lisp system.
<theseb> pjb: actually...imagine we worked in a sector where security was paramount.....i wonder if defining layers of langs somehow avoids potential security holes
<pjb> (Assuming transport with Earth is not possible anymore).
<pjb> theseb: yes, there's also this case.
<theseb> pjb: my point is...going hardcore on the math and axioms has its uses
nanoz has joined #lisp
kenster has joined #lisp
varjag has joined #lisp
theseb has left #lisp ["ERC (IRC client for Emacs 25.2.2)"]
Fare has quit [Ping timeout: 240 seconds]
Fare has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
pierpal has quit [Quit: Poof]
parjanya has joined #lisp
pierpal has joined #lisp
pierpal has quit [Client Quit]
pierpal has joined #lisp
nsrahmad has quit [Remote host closed the connection]
Copenhagen_Bram has quit [Ping timeout: 240 seconds]
nsrahmad has joined #lisp
nowhere_man has joined #lisp
nsrahmad has quit [Quit: Leaving]
Copenhagen_Bram has joined #lisp
danielxvu has joined #lisp
shlecta has joined #lisp
<drmeister> Within clasp I am going (require :asdf) --> loads clasps shiped 3.3.1.2 version of ASDF
<drmeister> Then I'm going (load "quicklisp:setup.lisp") (I set up a hostname for it)
<drmeister> I get this warning...
<drmeister> Why is it telling me I have an older one registered at sys:modules;asdf;asdf.asd ?
danielxvu has quit [Remote host closed the connection]
<drmeister> There is an ASD file at that pathname.
danielxvu has joined #lisp
<drmeister> My *features* is
<drmeister> :ASDF3.3 :ASDF3.2 :ASDF3.1 :ASDF3 :ASDF2 :ASDF
<drmeister> Just pick one damnit - amiright?
kajo has quit [Read error: Connection reset by peer]
Copenhagen_Bram has quit [Quit: So long, and thanks for all the fish! 2.2 Weechat is best Weechat]
tralala has joined #lisp
<pjb> drmeister: not really.
<pjb> drmeister: it helps testing for a version, or higher, since in general releases are backward compatible.
<drmeister> Probably not - I don't know what all those features are for - they may not be related to the warning.
<drmeister> Ok.
<pjb> drmeister: ie. ASDF 4.0 will probably be compatible with asdf 3.3, asdf 3 and asdf 2, so all those features will have to be present.
<pjb> It would be different in a *system-version-map* ;-)
<drmeister> Do you know why the warning is being generated? I cloned quicklisp-client.git from github and I'm using that. When I load the quicklisp:setup.lisp I get that warning even after I've loaded an asdf.
quipa has joined #lisp
kajo has joined #lisp
Copenhagen_Bram has joined #lisp
sauvin has quit [Read error: Connection reset by peer]
X-Scale has quit [Ping timeout: 248 seconds]
<jackdaniel> drmeister: sys:modules;asdf;asdf is part of clasp core modules (build with it)
<drmeister> Yes
<jackdaniel> it is a logical pathname to something like /usr/lib/clasp-x.x.x/modules/asdf2.fasl
<jackdaniel> and warning is being generated from ASDF itself, it doesn't like its previous incarnations. it is not about asdf2 being loaded, but mere about being present in the path
<jackdaniel> s/path/location where asdf looks for asd files/
nanozz has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
nanoz has quit [Ping timeout: 260 seconds]
Josh_2 has quit [Ping timeout: 256 seconds]
Josh_2 has joined #lisp
nanozz has quit [Ping timeout: 244 seconds]
gravicappa has quit [Ping timeout: 260 seconds]
Copenhagen_Bram has quit [Read error: Connection reset by peer]
jmercouris has joined #lisp
razzy has quit [Quit: ERC (IRC client for Emacs 25.1.1)]
skidd0 has quit [Quit: WeeChat 2.2]
Copenhagen_Bram has joined #lisp
jasmith has quit [Ping timeout: 265 seconds]
vlatkoB has quit [Remote host closed the connection]
Kundry_Wag has quit [Remote host closed the connection]
stylewarning has quit [Ping timeout: 245 seconds]
stylewarning has joined #lisp
X-Scale has joined #lisp
kajo has quit [Ping timeout: 256 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
asarch has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
pierpa has joined #lisp
Kundry_Wag has joined #lisp
orivej has joined #lisp
Bike has quit [Ping timeout: 252 seconds]
Copenhagen_Bram has quit [Ping timeout: 272 seconds]
tralala has quit [Remote host closed the connection]
tralala has joined #lisp
tralala has quit [Client Quit]
light2yellow has joined #lisp
shka_ has quit [Ping timeout: 248 seconds]
Copenhagen_Bram has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
Copenhagen_Bram has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Copenhagen_Bram has joined #lisp
mason has joined #lisp
acolarh has quit [Ping timeout: 260 seconds]
shlecta has quit [Ping timeout: 272 seconds]
Copenhagen_Bram has quit [Ping timeout: 240 seconds]
rumbler31 has joined #lisp
rumbler31 has quit [Remote host closed the connection]
<drmeister> asdf uses timestamps to figure out what it needs to build
Bike has joined #lisp
dyelar has quit [Quit: Leaving.]
ckonstanski has quit [Remote host closed the connection]
<drmeister> is that correct?
<drmeister> I'm dropping source code and a cache directory full of compiled files into a docker image and then running code.
<drmeister> asdf is rebuilding everything even though the timestamps are preserved - so I'm a bit puzzled.
<Shinmera> Yes
<Shinmera> At least as far as I know it uses mtime
kajo has joined #lisp
papachan has quit [Quit: WeeChat 2.2]
angavrilov has quit [Remote host closed the connection]
Copenhagen_Bram has joined #lisp
bbokser has quit [Quit: Page closed]
LiamH has quit [Quit: Leaving.]
sjl has joined #lisp
<drmeister> Is there a function like (asdf:why-the f*ck-are-you-rebuilding-everything system)?
<Shinmera> You can manually build an ASDF action plan (I showed you how once before) -- the plan should only include things that need to be done, excluding already performed operations
<Shinmera> Then you can try tracing select functions in ASDF to see where it's getting things from
<drmeister> I'll try that.
<drmeister> Do you have a link where you told me how to build an ASDF action plan?
<Shinmera> No
amz31 has joined #lisp
<amz31> hey
Josh_2 has quit [Ping timeout: 240 seconds]
sjl_ has quit [Ping timeout: 256 seconds]
<AeroNotix> is there an asdf function that can find the modules that the `:components` key describes. Alternatively, a function that gives me the asdf definition?
<Shinmera> asdf:find-component, if I remember correctly
<Shinmera> base being the system or other super-component.
<Shinmera> Or what exactly do you want? re-reading the message I'm not so sure.
<Shinmera> If you want the list of components in the system definition, asdf:component-children
acolarh has joined #lisp
jmercouris has quit [Remote host closed the connection]
danielxvu has quit [Remote host closed the connection]
<no-defun-allowed> Good morning everyone!
varjag has quit [Ping timeout: 240 seconds]
Fare has quit [Ping timeout: 256 seconds]
<pierpa> hey antipodean!
Fare has joined #lisp
<no-defun-allowed> G'day mate
random-nick has quit [Read error: Connection reset by peer]
wheelsucker has joined #lisp
wheelsucker has quit [Remote host closed the connection]
ebrasca has joined #lisp
rpg has quit [Quit: Textual IRC Client: www.textualapp.com]
wheelsucker has joined #lisp
Jesin has quit [Remote host closed the connection]
sjl has quit [Quit: WeeChat 2.2-dev]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
nowhereman_ has joined #lisp
dim has joined #lisp
nowhere_man has quit [Ping timeout: 256 seconds]
Jesin has joined #lisp
dim has quit [Quit: ZNC - http://znc.sourceforge.net]
parjanya has quit [Read error: Connection reset by peer]
dim has joined #lisp
<dim> hi!
parjanya has joined #lisp
<dim> I think I fixed my IRC settings and am able to chat here again ;-)
robotoad has quit [Quit: robotoad]
<jgkamat> :D
Kundry_Wag has quit [Remote host closed the connection]
<dim> jgkamat: thanks for confirming it works (that's how I read it)
* jgkamat reads dim loud and clear
asarch has quit [Quit: Leaving]
lavaflow has quit [Read error: No route to host]
<aeth> dim: Idk, I think the most graceful way for an IRC client to fail is to pretend like it's working, complete with fake conversations. The conversations are even predictable: talk about how the IRC client is now working.
makomo has quit [Ping timeout: 240 seconds]
makomo has joined #lisp
* jgkamat wonders if he is a robot
<no-defun-allowed> jgkamat: [ ] I am not a robot
v0|d has joined #lisp
robotoad has joined #lisp
<aeth> Well you don't have JS enabled so you can't check it
<aeth> therefore, you are a robot
dwrngr has quit [Disconnected by services]
<jgkamat> ^
dwrngr` has joined #lisp
earl-ducaine has joined #lisp
slyrus1 has joined #lisp
makomo has quit [Ping timeout: 256 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 240 seconds]
acolarh has quit [Ping timeout: 248 seconds]
acolarh has joined #lisp
<no-defun-allowed> ;-;
<jgkamat> I cannot evaluate js, therefore I am turing complete? xD