freenode/#lisp - IRC Chatlog
Search
10:29:26
jackdaniel
jmercouris: it is enough to look in the spec for definition of * and + functions
10:29:59
trittweiler
shka: You can git blame NEWS in the sbcl git repository, to determine which commit the changelog entry is about. Usually, changes come with tests. See https://github.com/sbcl/sbcl/commit/dfddbc8ada - you could try that test in sbcl 1.4.2 to see exactly what happens. But yes, to me that reads like game over.
10:30:36
jackdaniel
because (*) is by definition = 1, part of the spec. it is only natural, because neutral element for multiplication is 1
10:32:05
jackdaniel
you would be suprised what happens, if you supply negative number of arguments, try it! :-)
10:33:29
jmercouris
okay, so to multiply something, we agree that you need at least two values, right?
10:33:47
trittweiler
shka, there should also be a mail on sbcl-devel around dec 4, 2017, about this problem - as per the commit message
10:36:05
jackdaniel
do you have *any* practical purpose of these questions, or you just broadly share your amusement? (given you know [from the spec] how * and + functions work when supplied with 0 arguments)?
10:36:55
scymtym
jmercouris: (*) emulates a syntactic convention from mathematics that is convenient for associative operations with a neutral element. consider (list (* 1 2 3 4) (* (* 1 2) (* 3 4)) (* (* 1) (* 2 3 4)) (* (*) (* 1 2 3 4)))
10:37:47
jmercouris
okay, fine, it is not arbitrary, but it is still not grounded in something that satisfies me
10:39:25
jackdaniel
jmercouris: since you want to dig from the groud up to computing, start here: https://en.wikipedia.org/wiki/Abelian_group
10:40:12
jmercouris
jackdaniel: I'm okay without :D, perhaps my curiousity is not as strong as I thought
10:41:56
jmercouris
it's not like I am proud or anything, I don't think I've ever brought it up on this channel before
10:42:19
LdBeth
I should look at J’s introductory, i remember there’s a section gives a explain about that
10:42:48
jmercouris
beach: Yeah, it is because math is quite difficult for me, at least certain types of math, I'm very good at geometry, physics, but not so good with discrete mathematics and algebra
10:42:56
scymtym
jackdaniel: an Abelian group is a group plus commutativity if i recall correctly, but the commutativity is not relevant to this discussion (i completely agree with pointing out the concept of a group as the underlying reason, though)
10:53:21
LdBeth
Well, then, J just tells 0 = +/ 0$0, 1 = */ 0$0,and I have to explain what’s identity and rank to make it more clean. So i give up.
10:53:31
jmercouris
I guess the real problem with languages like python is primitive operators change the function order
10:59:30
jmercouris
I can only say that the naming conventions, and the argument order are very confusing frequently
11:00:54
jmercouris
I would be very much in favor of this, but I understand it would take a lot of work from many people
11:02:01
jmercouris
Yes, this argument comes up every time, and it is valid, but it would feel nice to have a new specification
11:02:30
tfb
I think the diffference is that, if you feel that CL is creaky (which I do slightly, now), you can, in almost all cases, make your own variant which is not and which will run on top of the existing language. You can't do that in Python without serious pain
11:04:12
tfb
beach: yes, agree -- if you want a new better (for you) CL implement one on top of the old CL, which is what we all do.
11:05:10
jmercouris
yes, but if everyone is doing that, wouldn't it be nice to have a unified set of improvements?
11:26:45
jackdaniel
CL lacks semantics for efficient (i.e without emulation) implementation of call/cc
11:30:56
beach
jackdaniel: Only if you insist on a fairly direct translation from Scheme to Common Lisp.
11:33:44
tfb
beach: I think it's only interesting if the shim is fairly thin (so, say, you could call into and out of Schemy things) as otherwise you might as well just use one of the 9 billion existing schemes
11:42:15
jackdaniel
right, I'm not claiming that you can't write Scheme compiler in CL (vice versa is possible too) - both are general purpose programming languages after all
11:45:29
jmercouris
tfb: I was thinking in the context of gentle introduction to symbolic computation
14:26:21
jeosol_
anyone following AWS summit in NY. It will be nice to see how CL plays into most of these. As a single developer, I am trying to see how I get my apps to scale if I get to that step
14:31:58
jeosol_
jmercouris: thanks for your input about running my remote jobs. I saw it but could not respond back. My use case is a bit crazy, something between running in slime and running jobs on LINUX command line after launching SBCL
14:33:22
jeosol_
So what I do normally, I have a monitor on one side with code, and some linux terminals. Since I am testing different configs, I usually create a new defun, and just run it on the a linux terminal.
14:37:14
jeosol_
JuanDuagherty: Sorry I didn't make that clear enough, but yes, AWS -> Amazon Web Services
14:38:10
JuanDaugherty
most 'apps' don't even have parallelization opportunities other than serving many users and that's highly routinized by such places and various pkgs now
14:40:48
JuanDaugherty
they do have some offerings in those categories, i'd be surprised if they use lisp though
14:41:05
jeosol_
I have had interests in Gabor Melis AI/ML library and the CLML library, and wanted to pick these up. Latter still have issues with license. For Gabor's code, I made small changes to work in a recent SBCL license,
14:41:37
jeosol_
I trained the model on my linux box, it was taking over two days to train and I killed the job. I think Gabor said he used GPU machines
14:42:14
jeosol_
Yes, Juan, they have several offerings. I think it is mostly C++, Python and Java based on the low-level frameworks
14:42:46
jeosol_
JuanDuagherty: Yes, that is the plan eventually, take up the code there and if I can things to improve
15:01:40
jeosol_
JuanD ...: I didn't get your lparallel comment, it was probably from a different conversation
15:13:51
jeosol_
I will like to discuss with folks running lisp related applications on the web. Even when using other language frameworks around the core engine in lisp.
15:21:03
jeosol_
The intent was to connect and not discuss that here. I do understand the focus of this forum.
15:23:04
JuanDaugherty
based on what I've looked at since we started talking, as far as common lisp is concerned lparallel still seems the default choice, imo anyway
15:24:09
jeosol_
Like I said, I am just looking for users with similar issues as I am facing so we can share ideas. Intent was not to discuss that here ..
15:39:00
beach
Here is an idea: When I compile SICL code to HIR on SBCL, the functions created would be subclasses of STANDARD-FUNCALLABLE-OBJECT. I would have a slot in that subclass that contains a "code object".
15:39:07
beach
The code object would have information about mappings from source locations to values of the "program counter" in the form of a place in the HIR code. It would also have tables that map HIR locations to other HIR locations for various debugger stepping functions.
15:39:19
beach
At strategic points in the HIR code, I generate code to interrogate a hash table to determine whether the current thread runs under the control of the debugger. If so, it further interrogates to determine whether it is at a breakpoint.
15:39:20
beach
If so, it waits on a semaphore that is associated with the thread. The debugger uses the code object to find source location for the breakpoint. The debugger can set more breakpoints, and it then signals on the semaphore to make the application thread continue its execution.
15:46:20
TMA
beach: ordinary debuggers use hardware breakpoints (interrupt when program counter is equal to this value) or just modify the code to "interrupt now"; I think you might achieve the one-thread debuggee, other thread runs the same code with duplicating the debugged code with breakpoints (so as the HW not to triger and to have modifiable copy)
15:47:35
TMA
beach: the only caveat is that (funcall (symbol-function XXX) ...) equivalent machinery needs to use the debugee code if one is available
15:48:12
beach
TMA: Not sure I follow. But I can't use hardware breakpoints here, because I don't want to dig deep into SBCL to find out low-level details.
15:49:07
jeosol_
jmercouris: thanks for the info. It seems my recent issues are out of focus for this forum. I'll need to follow up later.
15:49:56
beach
TMA: I also don't want to modify the code, even though it might be possible to not break in some situations.
15:51:38
TMA
beach: I see. With those two additional conditions other debuggers are not subjected to, you do not have much options except to instrument the code heavily as per your design.
15:52:22
beach
Yes, that decision was already made. This suggestion was about actually running and debugging SICL code inside SBCL.
15:54:58
beach
TMA: By instrumenting the code this way, in the final system I can trivially debug system code like SYMBOL-VALUE without having the system die on me. And I can debug the debugger.
15:56:43
beach
Hardware breakpoints may work in the final system. But I need to figure out how to avoid stopping when the thread is not debugged.
16:24:57
beach
What's the name of that library that provides a uniform way of examining backtraces across implementation?
16:27:49
Xach
on the internet, it can be difficult to distinguish ironic stupidity from legitimate stupidity
16:28:30
beach
What I would need for my suggested debugging interface is to get to the function object that is executing in a particular stack frame.
18:12:21
pfdietz2
I read this paper on mutation testing at Google. I was surprised to see one of the 7 languages involved was Common Lisp. https://ai.google/research/pubs/pub46584