freenode/#lisp - IRC Chatlog
Search
14:52:32
beach
TheWild: So "is" is ambiguous. Do you mean "as typed" "as read", or "as evaluated after being read".
15:05:09
TeMPOraL
p_l: I figure that, knowing the expected lengths of arrays of structs, I could make my own "defstruct" and "with-slots" equivalents that paper over the whole thing being expanded into a set of arrays, one per each structure slot...
15:06:59
TheWild
discovered (describe ...). Now I don't have to ask what monster I just have spawned ;)
15:19:56
TheWild
beach, so tell me if I'm wrong. READ traverses the whole tree and evaluates the nodes, unless it hits the QUOTE - if so, strips QUOTE but leaves all subnodes untouched.
15:22:19
pjb
It's important to know it. For example #P calls PATHNAME at read-time, but #' doesn't call FUNCTION at read-time.
15:36:26
beach
It is impossible to teach someone Common Lisp if the requirement is that the person must know everything from the start. For example, you can say "unless #. is used", but then you have to say that #. can be redefined as well, and you have to tell the person about readtables as well.
15:37:35
beach
And of course, '<mumble> only return (quote <mumble>) when ' has not been redefined, and <mumble> does not contain any spaces, etc, etc, etc. It never stops.
15:40:42
ludston
Does anyone have a suggestion on which graph library to use? I think I must have used 4 or 5 of the different libs from quicklisp. Most seem optimised for space (in that they store edges and vertices in lists) rather than speed.
15:42:07
vms14
In the land of lisp book they show how to use graphviz and lisp only creates the files graphviz needs
15:42:18
beach
ludston: "graph" is one of the toughest data structures around, because the representation will vary a lot according to the operations you need.
15:43:19
vms14
maybe graphviz it's fine for what you want and you could let lisp create the file and execute that program
15:45:07
ludston
Generally when I am using graphs it is for some dynamic programming problem, and I'm looking for O(1) on "does this edge exist"
15:52:40
vms14
It tells things that make me understand why lisp gives you that "enlightenment" everyone hears lisp will give you
15:54:59
ludston
vms14: Use evil mode and have both. Vim is worth the investment imho, because you can get a vim mode plugin in pretty much any IDE worth using and therefor avoid re-learning shortcuts.
15:57:10
vms14
I really trust this book, so I'll forget vi and go for emacs, I didn't want to learn emacs, because it requires time
16:04:23
loke`
The horrific parenthesis rendering in climaxima annoyed me greatly but the thought of fixing it just took all my inspiration away. It's kinda like design work, and I hate design work :-)
16:04:50
TheWild
beach: some time ago I said "I choose Lisp because it seems to be the most easily parseable higher-than-assembly programming language if one had to write parser entirely from scratch, but seems that I will likely end up with my own dialect.", so really what I want to do is to know the inner workings of Lisp, what decisions were made and why and by chance learn some Lisp.
16:06:31
loke`
Anyway, I finally decided to add some capabilities to the output records so that they can carry rendering hints (something along the lines of: "this part here should not be considered part of the bounding rectangle when computing the size of surrounding parenthesis
16:07:01
beach
TheWild: But if you are programming from scratch, there is no particular reason to use a static programming language at all.
16:08:27
loke`
beach: Yeah, it works. The dimensions still don't come out right, but that's a matter of tuning the dimensions :-)
16:19:34
TheWild
a couple of year ago I wanted to write assembler for ARM processors which could offer a bunch of higher level constructs. I didn't have experience in compiler design though so I eventually gave up. Bah, I still don't have an experience, but writing a parser and evaluator for limited dialect of Lisp seems a good attempt to build something that works.
16:22:40
p_l
(with VAX-oriented MACRO-32 turned into a compiler that generated Alpha code from VAX assembly)
16:22:56
vms14
I would recommend common lisp (mostly sbcl) since it has support for more things, like backend with hunchentoot
16:24:06
p_l
TheWild: well, KA-10 and KI-10 as well as PDP-6 I think all required writing the early bootstrap code into memory by hand, but that was in limited cases AFAIK
16:24:24
p_l
TheWild: the code was essentially few instructions that would loop over reading from paper tape
16:26:28
vms14
It's likely that you'll end writing more stuff with lisp that what you intended when you "entered" to the lisp world
16:27:05
beach
vms14: I think TheWild has decided that it is fun to design a programming language. This is my conclusion because no advice about existing languages or other techniques seem to get across.
16:27:26
p_l
loke`: though I will have to hunt down how exactly certain people made it so that programs built with early MIDAS worked while MACRO-1 didn't
16:30:53
vms14
I cannot say that really, but I guess if I use scheme would be as an embedded language rather than a standalone
16:36:13
neeasade
hi all -- what is the mechanism by which asdf finds ffi .so files? -- I ask because i'm on nixos where a dynamic ld wrapper gets set that just adds many rpath params and I'm trying to connect some things in a non-nix way probably.
16:38:42
jackdaniel
cffi looks at the standard locations, I don't know anything about asdf looking for so files (nor having anything to do with ffi)
16:39:01
liambrown[m]1
Sorry if this question comes across as noise. I've just started picking up LISP to work better with Emacs, and I've realized I probably want to do a lot more with it than that. Question is this: Node has NPM, PHP has Composer, Python has Pip, etc.; do equivalent facilities exist for LISP where I can write a program with dependencies and have them imported? From my searches since yesterday, it looks like Quicklisp might
16:41:38
neeasade
jackdaniel: thanks -- I think I was thinking asd gets in the mix because the reference is coming from the 'components' part of a definition -- https://github.com/swaywm/cl-wlroots/blob/master/cl-wlroots.asd#L21 -- so the issue is the .so can't be found while building that component
16:42:35
liambrown[m]1
I just read that LISP is used for AI, as well as a lot of other things. Not the silly little scripting language I've been led to believe it was, I guess.
16:42:40
jackdaniel
I don't know much about it, but I'd guess it also looks exactly where cffi does look
16:44:04
liambrown[m]1
@jackdaniel sorry, I'm conflating names. I take it CL is a good place to start for professional use?
16:44:35
jackdaniel
yes, Common Lisp is a result of standarization of various dialects being LISP descendants
16:45:07
pjb
Loading the boot code by hand made for computers you could trust. Nowadays, you don't know what code boots your computers!
16:45:19
vms14
one of their students was reading a paper from his teacher and thought he could write the eval function in asm
16:45:46
jackdaniel
then, for ones delight, read PAIP, which is a profound lecture with case studies of Common Lisp code
16:45:58
p_l
to be honest, a lot of very early foundational work in Computing Science can be divided into "numerical processing" and "AI" with growing side of "programming language theory"
16:47:20
liambrown[m]1
It's an interesting experience, coming from years of JS, PHP, and Python. I decided to go back to extreme basics this time around; that's been a helpful approach for me before.
16:47:56
vms14
and this is why prolog and lisp have some relation, just because they're known to be used for ai
16:48:29
p_l
well, Lisp arguably makes it quite easy to write the kind of object oriented code common in symbolic AI
16:48:30
beach
liambrown[m]1: I think you will find that Common Lisp is an extremely powerful language, and that there are some excellent implementations out there, capable of generating fast native code.
16:49:10
liambrown[m]1
Some of the ML/AI folks harp on the importance of GPUs for app performance. Any good starting points for that in CL, or should I even worry about it?
16:49:38
p_l
liambrown[m]1: don't worry about GPUs unless you're into statistics or similar pure numerics
16:50:49
p_l
and with TensorFlow and the like you're mostly stringing together abstract commands in a pipeline
17:00:37
pjb
beach: you don't mean "AI", you mean stockastic machine learning ;-) Hofstadter wouldn't call that AI…
17:21:00
flip214
Is there a function to convert a 2-dimensional array to 1-dimensional, like ROW-MAJOR-AREF then addresses it?
17:39:31
flip214
when given a function like #'=, is there a way to get back to the symbol? (doesn't work for anonymous functions or closures, of course)
17:51:47
flip214
TheWild: '(1) potentially gives you an immutable list - it could be stored in ROM, for example. So changing the CDR of that CONS is not allowed.
19:27:50
TheWild
lists in Lisp are linked lists or something similar. I wanted to see what will happen if I connect end of the list to its beginning.
19:35:23
vms14
this makes lisp reader check if the member of that list was seen yet by tracking what it reads
19:40:38
sjl
I wish backquote DID have to produce a fresh list each time... it would make it more generally useful, I think. But, oh well.
19:42:39
pjb
(setf *print-circle* t) #| prepare the printer |# (let ((item (list 1 2 3))) (setf (cdr (last item)) item) #| make it circular |# item) #| --> #1=(1 2 3 . #1#) |#
19:43:22
pjb
You can also use com.informatimago.common-lisp.cesarum.list:ensure-circular which does the same.
19:43:31
pjb
(com.informatimago.common-lisp.cesarum.list:ensure-circular (list 1 2 3)) #| --> #1=(1 2 3 . #1#) |#
20:44:39
puchacz
hi, can I loop :in many lists, but to the longest one, not the shortest, as by default please?
20:49:46
pjb
puchacz: (loop :for c1 := l1 :then (cdr c1) … :for cn := ln :then (cdr cn) :for e1 := (car c1) … :for en := (car en) :while (and c1 … cn) :do (something e1 … en))
20:53:09
pjb
(loop :for cs := (list l1 … ln) :then (mapcar (function cdr) cs) :for es := (mapcar (function car) ls) :while (some (function identity) cs) :do (apply (function something) es))
20:58:29
aeth
That might be the first time I've seen that be genuinely useful rather than just a question of ergonomics/style
21:02:33
pjb
otherwise, if cs contains list: ((a nil b) (c nil) (nil nil)) es will be (nil nil nil) the second time, and you'd stop there.
2:28:08
jsatk
Hi all. I'm new to Common Lisp. And I'm a vim user. I installed Quicklisp & Vlime (Slime-like plugin for vim). Whenever I start up my server via Vlime I get this strange error. http://i.jsatk.us/AH2bpp