freenode/#lisp - IRC Chatlog
Search
7:20:59
beach
That's a very tough thing to help you with, because it is not obvious what is too simple and what is too complicated for you.
7:22:23
beach
thmprover: For instance, something like RISC-V or a tiny subset of x86-64 can run Common Lisp just fine.
7:27:19
thmprover
beach: well, as I understand it (and I don't fully), a Lisp Machine boiled down to a sort of virtual machine atop a Risc processor.
7:29:10
beach
Sort of. I think it was a machine that could be microprogrammed. But the Lisp machine was not designed to be simple. It was designed to run Lisp efficiently, given the existing general-purpose processors and the compiler technology we had at the time.
7:31:08
beach
Take "CDR coding", for example. It makes things horribly complicated for the only reason that memory was expensive at the time.
7:32:33
beach
Didn't it also have out-of-band tag bits? Now, you can use the lower few bits of a 64-bit word without any problem, because machines are byte addressed, so there are more bits than you need.
7:37:35
alexshendi
I am trying to build SBCL 2.1.0 under NetBSD/arm64. I have tried to bootstrap using ecl and abcl. Both ultimately fail in the warm init phase (make-target-2.sh).
7:38:14
thmprover
beach: right, and while "CDR coding" is an important optimization, it's not a necessary component for an "abstract Lisp machine". I suppose my lack of knowledge about Lisp Machines may be the crux of my [immediate] problem.
7:39:37
saturn2
i believe the lisp machine had special instructions for accessing the various lisp data types, so you didn't have to choose between speed and memory safety
7:40:38
beach
But checking the type is easy these days, and type inference often makes it not necessary.
8:48:15
jeosol
I haven't installed on a NetBSD/arm64 before. What command are you running? There is also a #sbcl channel and the guys may be able to address this.
8:52:30
alexshendi
Actually both. Note that the error isn't from the host lisp implementation, but from the sbcl binary that was built using it.
9:06:53
solideogloria[m]
<lotuseater "ah no, #\DOWNWARDS_ARROW is a va"> that is the unicode character ↓
10:45:59
Krystof
beach: another thing about RMLL, at least as I recall it was implemented in our track, was that the plenary-type talks did not take up all that much time (1 day of the 4 or 5, perhaps) and so the rest of the time was spent however the delegates wanted... which led to some good hacking times
10:47:14
Krystof
it was also great because a bunch of us were able to meet in person for the first time. I'd met dan_b before (I think) but those meetings were my first encounter with gilbert, eric marsden, marc battyani, tim daly, ...
10:57:13
Krystof
and I had a great time! I remember going to Bordeaux twice for RMLL, and somewhere else once, I think
10:58:57
beach
The entire idea was fantastic. The first year there were less than 200 participants, as I recall, but it grew to more than 1000 pretty fast.
11:01:25
beach
It was just amazing to walk into the main entry hall of ENSERB and see all these people hacking away.
14:17:52
beach
But Scheme is a good idea to learn as well if you want to try something different from C.
14:18:25
beach
People here use Common Lisp for all kinds of things. It is a general-purpose programming language.
14:19:11
murtagh
Could you give me a reason why ppl would use C and why would they use Scheme or Common Lisp
14:19:54
beach
Globally speaking, C is closer to the machine, and Common Lisp is much better for writing applications.
14:22:36
beach
C is a very unsafe language, whereas most Common Lisp implementations are safe by default.
14:24:10
beach
murtagh: There is no widely agreed-upon definition of "Lisp", which is part of the reason why this channel is about Common Lisp, which is quite well defined.
14:24:12
phoe
Lisp is a whole family of languages, including dialects like Scheme, Racket, Common Lisp, Clojure, Shen, Hy, Lisp Flavored Erlang, and what else
14:24:54
beach
murtagh: I believe there is a channel #lispgames that is dedicated to games in Common Lisp.
14:25:21
Xach
Furthermore, #lisp is the place where people who *like* common lisp congregate - not simply people who use it. It's not a support group for people who are forced to use it and hate it.
14:27:43
Xach
common lisp has a well-written standard, multiple mature implementations, the possibility of commercial support, examples of successful companies and applications with CL at their core (though not a zillion, they do exist), potential for fast code
14:28:59
Xach
i sometimes wish there were multiple multibillion-dollar companies racing to improve it, but then i think the result would not really be recognizable as the thing i like for very long.
14:58:53
VincentVega
Happy 2021, folks! A bit late to the party, but now that quickdocs is closed. what do you use? I just want to explore the existing projects. For emacs, there's MELPA which makes it easy as every project there has a very short description and you can search it.
15:02:36
contrapunctus
VincentVega: awesome-cl/cl-cookbook, but I'm just a newcomer. Would the querying functions of Quicklisp work?
17:22:28
pve
at some point I'd like to give one to my son, but I fear he's still a bit too young for CL :)
17:33:15
aeth
pve: Probably too low-level but you could probably hack together some 80s-style 2D game that he can just modify
17:53:32
phoe
We have CL:CONSTANTP that accepts a Lisp form and a lexical environment, and answers true or false. Is it generally possible to have a hypothetical CONSTANT-VALUE operator that produces a value off a form that has been declared constant by CONSTANTP?
17:57:50
jackdaniel
i.e ecl's compiler has a function constant-value-p which returns two values: whether it is a constant, and if it is, the second value the value
18:02:02
aeth
phoe: Portably, I guess could do something like this, which doesn't have an environment, but I think the only portable DEFCONSTANT is global, anyway: (and (constantp '+foo+) (symbol-value '+foo+))
18:03:03
phoe
aeth: portably, yes, but if an implementation answers that e.g. '(+ 1 2) is CONSTANTP, then it should be able to fetch that value
18:03:33
phoe
I'm asking because I'm verifying my comment at https://www.reddit.com/r/lisp/comments/kob7hd/compiler_macros_when_why_how_and_real_life/
18:03:37
jackdaniel
constant may be defined in the compilation unit (but not really evaluated), that's another gotcha (then symbol-value won't work)
18:06:06
phoe
that's where the hypothetical CONSTANT-VALUE function comes into play, but I have no idea if there even exists a portalib for it
18:08:31
aeth
phoe: maybe something like this? (if (and (symbolp foo) (constantp foo)) #| the fast path using (symbol-value foo) |# #| the slow path |#)
18:09:02
phoe
basically https://github.com/Clozure/ccl/blob/553c0f25f38b2b0d5922ca7b4f62f09eb85ace1c/level-1/l1-utils.lisp#L680-L684
18:09:58
aeth
Well, I guess not because CL:+ is package-locked in SBCL and perhaps other implementations.
18:11:50
aeth
phoe: That doesn't help the general case, only with CL:+, which was poorly chosen on my part. Unless the package you're using is package locked. It looks like Alexandria has this... #+sb-package-locks (:lock t)
18:12:09
phoe
aeth: the general case is that I have a form, and an implementation tells me that this form is CONSTANTP
18:12:11
aeth
Idk which implementations other than SBCL implement the feature sb-package-locks, though
18:12:43
phoe
possibly using implementation-dependent functionality, because it's required in the general case
18:13:06
aeth
But a tree-walk only works if it's package locked, otherwise it could stand for anything.
18:19:19
aeth
phoe: I guess SYMBOLP is the only thing you can do portably for the portable path, then? Since that's just global. i.e. (and (symbolp '+foo+) (constantp '+foo+)) then (symbol-value '+foo+)
19:10:38
MetaYan
The sb-cga issue that's been causing many failures in the Quicklisp reports now has a fix: https://github.com/nikodemus/sb-cga/pull/8 . Does anyone here have the possibility to merge it?