libera/#sbcl - IRC Chatlog
Search
11:45:51
luis
I wonder why (type-of -2) => fixnum but (type-of 2) => (integer 0 <most-positive-fixnum>). Krystof implemented this 20 years ago, I'm sure it's fresh on his mind why. :)
11:47:38
|3b|
has to be a recognizable subtype of any built-in types containing the value, in this case unsigned-byte and fixnum?
12:00:38
luis
|3b|: would you say (integer 42 42) is a built-in type? I guess it's fair that type-of avoids consing though.
12:04:12
|3b|
also isn't very useful for trying to decide if two things have "the same type" in some sense
12:43:42
pdietz
I still would like to see Strandh's call-site optimization in SBCL. A small matter of programming, I'm sure.
13:28:24
_death
I'm feeling the only way such a query could "work" in general is by having type-of return something like (eql 42)
13:30:55
pdietz
Maybe (type-of x) should be equivalent to something like (canonical-type `(eql ,x)), where canonical-type has the property that (subtypep y (canonical-type y)) is true, and that if (subtypep x y), then (subtypep (canonical-type x) (canonical-type y)).
13:35:33
_death
pdietz: doesn't class-of serve as canonical-type? clhs says (subtypep (type-of x) (class-of x)) => t, t
13:43:04
_death
a canonical-type (that takes a typespec) would have the usual limitations (think satisfies) that have subtypep return a secondary value..
14:08:30
pdietz
I am imagining canonical-type working on types, not objects. So, one might do (canonical-type '(member 0 15)), or more complex types.
14:27:33
lukego_
Hey tangentially: what's the SBCL hacker view of Coalton? Specifically is the type inference in Coalton likely to translate into heavily specialized ("Julia") compiled code or is the "intermediate" SBCL code more generic?
15:28:09
karlosz
lukego_: iirc coalton does its own type inference and monomorphization, which means all call sites are annotated with specialized compiled code (assuming that the underlying lisp implementation is able to compile the specialized code)
15:29:08
karlosz
there is also block compilation which allows local call convention to be used - importantly it allows unboxed floats to get passed around without any inlining needed
15:29:54
karlosz
as you mentioned the user is always going to do a better job for this type of thing
15:31:11
karlosz
pdietz: main issue with something like call-site optimization is that it requires a fair bit of GC coordination and rewriting the call convention (+ associated machine code for 6 architectures)
15:34:11
karlosz
the path that was explored in the 90s seemed to be more "dynamically recompile callers based on a dependency tree" or something
15:59:30
pdietz
A problem with all this is what happens when something is redefined while a function that depends on those definitions has calls on the stack.
19:07:27
lukego_
I also need to consider whether what I'm writing is really GPU code and if so how to move it there. Maybe it could _finally_ be time to write a little language like Squeak's S-Lang in Lisp? No, probably not, never seems to be the right time for that...
19:08:10
lukego_
but following up such lovely trains of thought will be a reward in the future for having more _working_ code that needs to speed up :)
19:23:46
Krystof
lukego_: you could follow along with Andrew Sengul's adventures in using SBCL to compile APL