freenode/#sbcl - IRC Chatlog
Search
10:13:43
luis
Krystof: tracing _all_ methods works great. Tracing one method is not implemented for the :encapsulated t case.
10:53:31
luis
The use case here is something like tracing a specific common-graphics:event method rather than all event methods.
16:21:54
Krystof
I also cunningly left in commented out ancient implementations of traced methods to confuse myself mightily
16:22:09
mfiano
Hello. I think I found a bug, or at least an inconsistency with previous SBCL versions
16:24:18
mfiano
The release notes say that CONSTANTLY has been made more efficient when given a constant argument, and indeed, it no longer prints as a closure object. However, inspecting it still shows it is closing over the value NIL. The problem is, ALL closures are now printed as #<FUNCTION ...> rather than #<CLOSURE ...>. I just wasted 20 minutes because something I thought was not a closure was not obvious
16:36:51
Krystof
mfiano: calling a non-compiled (constantly nil) (say, at the repl) I would expect to close over NIL
16:37:11
Krystof
I would expect the result of (funcall (compile nil '(lambda () (constantly nil)))) not to close over anything
16:40:25
mfiano
This different printed representation of closures now means I have to go back and check lots of code I wrote in the last couple weeks, and to remember to check future code I write more closely. Wish that was mentioned in the release notes.
16:49:25
Krystof
Sorry. In general I would advise against using the non-readable printed representation of objects for anything programmatic
16:53:30
aeth
Does this change to CONSTANTLY improve FP performance? Does it compose with COMPLEMENT or does it call things twice?
17:02:41
mfiano
Krystof: I was not using it programmatically. When I see the printed representation as CLOSURE of an object in the inspector, I know to check carefully if I really want to close over the values or if it was a mistake I made. This change just violated the principle of least surprise.
17:03:21
mfiano
But, now I know inspect it further and can't take it's printed representation at face value.