freenode/#lisp - IRC Chatlog
Search
1:21:32
White_Flame
would that be (+ 1 2 3), or (+ 1 (+ 2 3)) or what? impossible to know just from the output example
1:24:17
porky11
for math this concept is not perfect, but for natural language things, this seems useful in many cases
1:26:05
White_Flame
I do like end delimiters, because there's only 1 to deal with, instead of per-element delimiters, like commas in most other languages' lists
1:30:46
stacksmith
Forth is pretty usable, although it becomes convoluted. by optimizing away braces, you lose clarity.
1:30:48
White_Flame
yes, (1 2 3 4 5) vs "1, 2, 3, 4, 5" or "1 and 2 and 3 and 4 and 5" where the latter 2 delimit the list on every element
1:32:52
White_Flame
my example was giving a function name, and then saying that we're going to be using it with a list of parameters
1:35:44
White_Flame
right, does "function with blah blah blah done" sound more natural to you than "function start blah blah blah end"
1:37:06
White_Flame
but in any case, all programming languages are about tracking very specific operations & data paths. Natural language is all about communicating within assumption & implied context, so they're never going to mesh well
1:38:28
porky11
would also be nice, if it's just usable as a language for a game, where you can tell computer players what to do
1:39:59
White_Flame
I think there's many lessons to be learned from SQL and COBOL, both of which were intended to be "like natural english"
1:40:22
White_Flame
and both of which ended up still being specific, fiddly, engineering tasks to write, just like any programming language
1:41:07
Zhivago
I'm not sure about never -- natural language presumes a dialogue between intelligent agents.
1:41:09
porky11
they are pretty stupid languages, expecially SQL just seems like a complicated version of the underlying logic
1:41:38
Zhivago
As we move toward negotiating with intelligent agents rather than specifying dumb machines, natural language will probably come to dominate programming.
1:41:58
White_Flame
Zhivago: right, if we get machine agents to understand English, then we won't have a mesh of programming language & natural language. We'll just have natural language :)
2:01:48
rme
Summary results from my Clozure CL platform survey: https://lists.clozure.com/pipermail/openmcl-devel/2018-February/011797.html
2:06:25
welle
Hi, newbie to Lisp here. There are some instructions for running nEXT Browser in Linux, and they work when I run them one after another in a SBCL repl. When I put them in a progn statement and try to compile them to a binary with save-lisp-and-die, it returns a thread error. Help?
2:09:00
Bike
you shouldn't save-lisp-and-die from slime, it doesn't work well if multiple threads are running
2:14:00
Bike
that's not the usual mode of interacting with lisp. does nEXT not have build instructions?
2:15:48
welle
No, it currently has to be built from source on Linux. I want to use it for browsing so I learn Emacs-style keybinds.
2:17:07
White_Flame
save-lisp-and-die should be given the instructions to start up the system post-restore
2:17:25
White_Flame
you shouldn't try to save a running system wiht threads, open files/sockets/etc, because that's not meaningful to capture
2:17:48
Bike
i think the usual practice with save lisp and die is to write a script system that gets the system into the state you want it to start up in.
2:18:37
Bike
http://sbcl.org/manual/index.html#Function-sb_002dext_003asave_002dlisp_002dand_002ddie here's the docs. i think basically you want to specify the filename, :executable t, and :toplevel set to whatever function should run when the browser starts.
2:22:55
welle
I wrote (sb-ext:save-lisp-and-die "nEXT-Browser" :toplevel #'(progn(require :asdf)(asdf:load-asd "/home/welle/next/next/next.asd")(ql:quickload :next/gtk)(next:start)) :executable t)
2:24:24
Bike
write a file like this: (require :asdf) (asdf:load-asd "~/next/next.asd") (ql:quickload :next/gtk) (sb-ext:save-lisp-and-die "nEXT-Browser" :executable t :toplevel #'next:start)
2:24:30
welle
Do I need to do (defun start-browser () (progn(require :asdf)(asdf:load-asd "/home/welle/next/next/next.asd")(ql:quickload :next/gtk))) ?
2:30:02
welle
Bike: It appears to have created a file, but it flashes a screen and dies when I double-click on it.
2:31:25
Bike
it's possible next:start is written to just start the system, but expects the system to remain up afterward. i wouldn't know.
5:33:26
krwq
How do you create an int and get pointer to it with cffi? I've tried this: (cffi:with-foreign-object (user-data :int) (setf user-data 123) (cffi:mem-aptr user-data :int 0)) but it gives me a value and not a pointer to that value
5:46:45
krwq
thanks pillton - so what does mem-aptr do then and why didn't it complain about type when setfing?
5:47:50
pillton
The value bound to user-data is a system area pointer i.e. it is an object representing an address in memory.
5:51:43
pillton
(cffi:mem-aptr user-data :int 1) <=> (cffi:inc-pointer user-data (* 1 (cffi:foreign-type-size :int)))
5:52:36
aeth
Could someone make a C->CL compiler in CL using CFFI? Or does CFFI not let you do everything that C can do?
5:55:29
aeth
Would it be more efficient than other C->CL approaches? Afaik, Mezzano (or was it another LispOS?) uses a C->CL compiler for Doom.
5:56:53
aeth
Ah, the Mezzano Doom port used an LLVM IR to CL compiler. https://news.ycombinator.com/item?id=14120802
5:58:37
aeth
k-hos: Programming as art is all about using things in cool ways they're not supposed to be used (as long as such ways are legal and ethical)
6:02:11
aeth
iqubic: Imo it's worthwhile to know enough assembly that you can read the output of #'disassemble
6:03:45
aeth
disassemble is implementation-specific (and can also be architecture specific, obviously)
10:01:36
Shinmera
iqubic: Learning ASM is worth it, though there's not just one assembly, and they can differ significantly in details.
10:02:10
Shinmera
iqubic: I'd recommend learning a very simple RISC-like first, and then learning x86. The former because it'll be easier to get started with and get an idea of what it's about, and the latter because it's actively useful.
12:50:36
jmercouris
borodust: Xach said that you apparently use quickdist to host your own quicklisp server?
12:54:54
AeroNotix
I'm sure I could google this but what if your dist provides a package that's in the base quicklisp dist?
12:56:15
jmercouris
Shinmera: Okay, so is it okay if I bounce off my idea off of you to make sure I understand this?
12:57:03
jmercouris
people can submit packages, whatever, each package contains it's own folder per the quickdist instructions
12:57:36
jmercouris
then, I can use quickdist to publish to my github io page at some url called like next-dist or whatever
12:58:09
jmercouris
when next first loads it will do: (ql-dist:install-dist "http://url-to-next-dist.github.io/quickdist.txt")
12:58:53
jmercouris
then of course theoretically, assuming I exported properly, they will be able to (ql:quickload "xyz-package-from-next-trusted-repository")
12:59:06
Shinmera
jmercouris: Is next supposed to be quickloadable or only available as a binary package?
12:59:34
Shinmera
In the former I heavily advise you not to mess with quicklisp without the user's explicit instructions to do so
12:59:48
Shinmera
In the latter I would do that before you ship a package so that it's already done.
13:00:02
AeroNotix
jmercouris: as Shinmera mentioned messing with the user's QL is no good. You can however isolate next's QL environment though
13:00:17
AeroNotix
e.g. if you install from binary and have a next-isolated QL install then everything is fair game.
13:00:40
AeroNotix
jmercouris: not sure about namespaced but in Lispkit I install QL into a local dir and use that instead.
13:00:44
Shinmera
jmercouris: You can have multiple QL installations, but only one active at a time in an image.
13:00:57
AeroNotix
look at lispkit's makefile. There's some rules which do something similar. Should give you an idea
13:01:56
jmercouris
but if they are quickloading next, then they can't exactly switch to another QL installation after having quickloaded it
13:03:44
jmercouris
AeroNotix: have you given the GTK version a spin perchance? I know you're super busy, jw
13:03:58
AeroNotix
jmercouris: no I haven't. Getting more time recently though. When I get a minute I'll run it
13:04:38
AeroNotix
but I am talking about users of binary distributions. Installing your own QL path and load plugins from that is better
13:04:50
jmercouris
because if they can QL next, they should be able to go ahead and add a new dist to install plugins etc
13:05:22
jmercouris
and at any rate, when they QL next, they can compile it, and install plugins that way as well
13:06:18
AeroNotix
https://github.com/AeroNotix/lispkit/blob/master/Makefile#L72-L84 here's what I did in lispkit. This was aimed at being able to build lispkit without needing many system dependencies but the idea remains
13:11:17
jmercouris
Also, I am trying to do split window, and I'm having a very unpleasant time trying to figure it out
13:11:40
jmercouris
on the surface it looks so deceptively simple, just a tree of views, with split horziontal and split vertical
13:11:41
AeroNotix
jmercouris: I just built the image for it and in the repo I had a PKGBUILD for archlinux
13:12:38
jmercouris
maybe that is what I should do, just include a shellscript that creates a binary
13:13:41
AeroNotix
jmercouris: https://github.com/AeroNotix/lispkit/blob/2482dbeabc79667407dabe7765dfbffc16584b08/Makefile#L96-L106
13:14:18
AeroNotix
https://github.com/AeroNotix/lispkit/blob/2482dbeabc79667407dabe7765dfbffc16584b08/make-image.lisp
13:16:25
AeroNotix
Right now I'm kind of focusing on IRL projects. I've got a couple of cars I am working on.
13:18:52
AeroNotix
https://photos.app.goo.gl/BTEuDXN3qx8olPf63 then someone used it for their wedding
13:19:57
AeroNotix
yeah it is, I love the size difference. It really does embody the different attitudes between English and American people